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

Posted

技术标签:

【中文标题】如何在 SQL Developer 中执行 SQL Server 存储过程?【英文标题】:How to Execute SQL Server Stored Procedure in SQL Developer? 【发布时间】:2011-05-07 09:56:15 【问题描述】:

我获得了一个 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 调用该过程?如果是这样,我需要使用什么语法?

【问题讨论】:

【参考方案1】:

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

proc_name paramValue1, paramValue2

(你需要用逗号作为误称)

【讨论】:

这条规则有例外吗?我似乎收到错误“'sp_dev_mystoredproc' 附近的语法不正确”。使用此语法执行时。 在我的情况下需要执行之前的 proc_name @nuzzolilo 不要在逗号中使用 sp 名称。【参考方案2】:

你不见了,

EXEC proc_name 'paramValue1','paramValue2'

【讨论】:

我添加了缺少的逗号,但再次出现同样的错误。 如果它们是 varchar,你的参数是什么,那么只有你需要引号......除此之外想不出任何东西......你可以试试这个,只在新窗口中运行这个 - EXEC proc_name 看看它是否要求您提供第二个参数...那么至少您知道您的语法是正确的..如果不起作用意味着您可能没有正确的存储过程名称...尝试完整的限定名称..跨度> 我删除了第二个参数,但仍然是同样的错误。我认为它根本不是运行程序。 EXEC 命令没有突出显示语法,所以我猜即使连接到 SQL Server 数据库,开发人员也无法识别它。但我在网上找不到任何东西来确认/否认这一点。 是的..尝试选择一些记录并执行一些简单的命令,看看是否有任何工作!..祝你好运.. 很遗憾,我的用户只有运行存储过程的权限。【参考方案3】:

你需要这样做:

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'

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

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

EXEC proc_name 'paramValue1','paramValue2'

【讨论】:

【参考方案7】:
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

如果存储过程的目标是在声明了 Identity 字段的表上执行 INSERT,那么在这种情况下 @paramValue1 应该声明该字段并只传递值 0,因为它将是自动递增。

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

开始 程序名(); 结束;

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

【讨论】:

为什么要在语句块中包含单个语句?您只需要为series of T-SQL statements 这样做。【参考方案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.

【讨论】:

欢迎来到***。参加this 之旅,了解该网站的运作方式及其用途。你的答案是什么?

以上是关于如何在 SQL Developer 中执行 SQL Server 存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle SQL Developer 中多次执行相同的存储过程?

如何在 Oracle SQL Developer 中执行超过 100 万条插入查询?

pl sql developer应用问题

如何在sql developer中执行同时具有out参数和返回值的函数以获取结果

pl sql developer怎么执行sql

pl sql developer怎么执行sql