如何在 SQLDeveloper 中执行 SQLServer 存储过程?

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

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中包装语句,但是得到相同的错误。是否可以从 SQLDeveloper 调用该过程?如果是,我需要使用什么语法?

769154 次浏览

你错过了 ,

EXEC proc_name 'paramValue1','paramValue2'

您不需要 EXEC 子句,只需使用

proc_name paramValue1, paramValue2

(你需要逗号,因为用词不当)

可以使用以下语法在 sql 开发工具中运行存储过程

开始 程序名() ; 完

如果有任何参数,那么它必须被传递。

你得这么做:

exec procName
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
Select * from Table name ..i.e(are you save table name in sql(TEST) k.


Select * from TEST then you will execute your project.
EXECUTE [or EXEC] procedure_name
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'

如果只需要执行存储过程 proc_name 'paramValue1' , 'paramValue2'... 同时执行多个查询,如必须添加的一个选择查询和存储过程 Select * from tableName EXEC proc _ name paramValue1,paramValue2...

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

如果存储过程的目标是对声明了 Identity 字段的表执行 INSERT,那么在这个场景中,应该声明这个字段,并且只传递值0,因为它将是自动递增的。

我知道这个是旧的,但这个可以帮助其他人。

我在 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

您需要在 paramValue1和 paramValue2之间添加一个 ,

EXEC proc_name 'paramValue1','paramValue2'

有两种方法可以调用存储过程

  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 编辑器 三,例行公事。