如何在SQL Developer中执行SQL Server存储过程?

问题描述 投票:0回答:12

我已经获得了一个 SQL Server 数据库的用户帐户,该数据库仅具有执行存储过程的权限。我将 JTDS SQL Server JDBC jar 文件添加到 SQL Developer 并将其添加为第三方 JDBC 驱动程序。我可以成功登录到SQL Server 数据库。我得到了运行程序的语法:

EXEC proc_name 'paramValue1' 'paramValue2'

当我将其作为语句或脚本运行时,出现此错误:

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

我尝试将语句包装在

BEGIN/END
中,但得到了同样的错误。是否可以从 SQL Developer 调用过程?如果是这样,我需要使用什么语法?

sql-server stored-procedures oracle-sqldeveloper
12个回答
257
投票

你不需要 EXEC 子句。只需使用

proc_name paramValue1, paramValue2

(你需要逗号,正如 Misnomer 提到的那样)


82
投票

你不见了

,

EXEC proc_name 'paramValue1','paramValue2'

23
投票

你需要这样做:

exec procName 
@parameter_1_Name = 'parameter_1_Value', 
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'

4
投票
EXECUTE [or EXEC] procedure_name
@parameter_1_Name = 'parameter_1_Value', 
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'

1
投票

我知道这是旧的。但这可能会帮助其他人。

我在BEGIN/END之间添加了SP调用功能。这是一个工作脚本。

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP 
    where Id = @Id 

1
投票

您需要在paramValue1 和paramValue2 之间添加

,
。你错过了。

EXEC proc_name 'paramValue1','paramValue2'

0
投票
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

如果存储过程的目标是在声明了身份字段的表上执行

INSERT
,那么在这种情况下
@paramValue1
,应该声明该字段并只传递值 0,因为它将是自动的增量。


0
投票
--worked for me in sql 5.731
--use db;
call procedureName;

-1
投票

调用存储过程有两种方式

  1. CALL

    database name'. 'stored procedure name
    (参数值); 示例:- CALL
    dbs_nexopay_sisd1_dec_23
    .
    spr_v2_invoice_details_for_invoice_receipt_sub_swiss
    (1, 1, 1, 1);

  2. 从你的 MySQL 工作台你也可以做到这一点。 我。右键单击存储过程。 二.发送到 SQL 编辑器 三.程序调用。


-3
投票

如果你只是需要执行你的存储过程

proc_name 'paramValue1' , 'paramValue2'...
同时您正在执行多个查询,例如一个选择查询和存储过程,您必须添加

select * from tableName
EXEC proc_name paramValue1 , paramValue2...


-8
投票

可以使用以下语法在 sql developer tool 中运行存储过程

开始 过程名称(); 结束;

如果有任何参数,则必须传递它。


-11
投票
Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.
© www.soinside.com 2019 - 2024. All rights reserved.