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

时间:2010-11-09 17:51:43

标签: sql-server stored-procedures oracle-sqldeveloper

我已经获得了一个只有执行存储过程权限的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调用该过程?如果是这样,我需要使用什么语法?

10 个答案:

答案 0 :(得分:211)

您不需要EXEC条款。只需使用

proc_name paramValue1, paramValue2

(你需要逗号作为Misnomer提到的)

答案 1 :(得分:67)

您缺少,

EXEC proc_name 'paramValue1','paramValue2'

答案 2 :(得分:17)

你需要这样做:

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

答案 3 :(得分:4)

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

答案 4 :(得分:1)

您需要在paramValue1和paramValue2之间添加一个“,”。你错过了。

EXEC proc_name 'paramValue1','paramValue2'

答案 5 :(得分:0)

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

如果存储过程目标是在声明了标识字段的表上执行INSERT,则应声明此方案@paramValue1中的字段,并传递值0,因为它会自动增加。

答案 6 :(得分: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 

答案 7 :(得分:-2)

如果您只需要执行存储过程 proc_name 'paramValue1' , 'paramValue2'... 同时您正在执行多个查询,例如一个选择查询和存储过程,您必须添加 select * from tableName EXEC proc_name paramValue1 , paramValue2...

答案 8 :(得分:-6)

可以使用以下语法

在sql developer工具中运行存储过程

BEGIN 过程名(); END;

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

答案 9 :(得分:-10)

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

Select * from TEST then you will execute your project.