【问题标题】:How to Execute SQL Server Stored Procedure in SQL Developer?如何在 SQL Developer 中执行 SQL Server 存储过程?
【发布时间】: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 调用该过程?如果是这样,我需要使用什么语法?

【问题讨论】:

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


    【解决方案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 中运行

                开始 程序名(); 结束;

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

                【讨论】:

                【解决方案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.
                

                【讨论】:

                • 欢迎来到stackoverflow。参加this 之旅,了解该网站的运作方式及其用途。你的答案是什么?
                猜你喜欢
                • 2023-03-04
                • 2011-11-11
                • 1970-01-01
                • 1970-01-01
                • 2020-04-13
                • 2011-04-28
                • 2016-10-21
                • 2013-12-09
                • 2021-12-01
                相关资源
                最近更新 更多