web-dev-qa-db-ja.com

SQL DeveloperでSQL Serverストアプロジャを実行する方法

ストアドプロシージャを実行する権限のみを持つ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からプロシージャを呼び出すことは可能ですか?もしそうなら、私はどのような構文を使用する必要がありますか?

135
sdoca

EXEC句は必要ありません。単に使う

proc_name paramValue1, paramValue2

(そして、あなたはミスノマーが述べたようにあなたはコンマを必要とします)

212
Tema

,が見つかりません

EXEC proc_name 'paramValue1','paramValue2'
67
Vishal

これをする必要があります:

    exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'
17
Daniel
    EXECUTE [or EXEC] procedure_name
  @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'
4
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

ストアドプロシージャの目的が、Identityフィールドが宣言されているテーブルでINSERTを実行することである場合、このシナリオでは@paramValue1フィールドを宣言し、値0を渡すだけです。自動インクリメントである。

0
chri3g91

これは古いものです。しかし、これは他人を助けるかもしれません。

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 
0
Roshan Perera