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


148

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

回答:


231

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

proc_name paramValue1, paramValue2

(そしてミスノマーが述べたようにコンマが必要です)


8
このルールに例外はありますか?「「sp_dev_mystoredproc」付近の構文が正しくありません」というエラーが表示されるようです。この構文で実行する場合。
nuzzolilo 2015年

2
EXEC前proc_nameには、私の場合に必要とされる
セサル・レオン

3
@MuriloKunzeによって提案されたリンクにアクセスすることを強くお勧めします。知ることは非常に重要です。
RBT 2017

@RBT誰がどこにリンクしていますか?
CervEd

72

あなたがいません ,

EXEC proc_name 'paramValue1','paramValue2'

1
不足しているカンマを追加しましたが、やはり同じエラーが発生します。
sdoca 2010年

varcharの場合のパラメーターは何ですか?引用符が必要なのはそれだけです...それ以外は何も考えられません...これを新しいウィンドウで実行するだけで、これを試してみることができEXEC proc_nameます。 2番目のパラメーター...少なくとも構文が正しいことがわかっている場合..動作しない場合は、正しいストアドプロシージャ名がない可能性があります...完全修飾名を試してください..
Vishal

2番目のパラメーターを削除しても、同じエラーが発生します。実行中の手順ではないと思います。EXECコマンドは構文が強調表示されていないため、SQL Serverデータベースへの接続であっても、Developerがコマンドを認識しないと思います。しかし、それを確認/拒否するための情報がウェブ上で見つかりません。
sdoca 2010年

Yea..tryいくつかのレコードを選択すると、いくつかの簡単なコマンドを実行するには、参照、すべての作品には何も...最高の幸運...もし!
ヴィシャル

残念ながら、私のユーザーはストアドプロシージャを実行する権限しか持っていません。
sdoca 2010年

18

これを行う必要があります:

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


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

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


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 

-3

ストアドプロシージャproc_name 'paramValue1' , 'paramValue2'... を同時に実行する必要があるだけの場合 は、1つの選択クエリとストアドプロシージャのように、複数のクエリを実行する必要があります。 select * from tableName EXEC proc_name paramValue1 , paramValue2...



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

Select * from TEST then you will execute your project.

1
Stackoverflowへようこそ。テイクこのこのサイトは働くとそれがためにどのように知ってもらうためにツアーを。あなたの答えは何ですか?
Devraj Gadhavi 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.