163

ストアドプロシージャを実行する権限しか持たないSQLServerデータベースのユーザーアカウントが与えられました。JTDS SQL Server JDBCjarファイルをSQLDeveloperに追加し、サードパーティのJDBCドライバーとして追加しました。SQLServerデータベースに正常にログインできます。プロシージャを実行するために、次の構文が与えられました。

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からプロシージャを呼び出すことは可能ですか?もしそうなら、どの構文を使用する必要がありますか?

4

11 に答える 11

253

EXEC句は必要ありません。単に使用する

proc_name paramValue1, paramValue2

(そして、Misnomerが述べたようにコンマが必要です)

于 2012-09-21T07:24:18.583 に答える
79

あなたは行方不明です,

EXEC proc_name 'paramValue1','paramValue2'
于 2010-11-09T17:56:18.480 に答える
22

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

exec procName 
@parameter_1_Name = 'parameter_1_Value', 
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
于 2013-07-12T16:09:42.850 に答える
4
EXECUTE [or EXEC] procedure_name
@parameter_1_Name = 'parameter_1_Value', 
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
于 2015-03-30T13:44:35.200 に答える
1

私はこれが古いものであることを知っています。しかし、これは他の人を助けるかもしれません。

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 
于 2018-05-21T11:34:30.647 に答える
1

paramValue1とparamValue2の間に「、」を追加する必要があります。あなたはそれを逃しました。

EXEC proc_name 'paramValue1','paramValue2'
于 2020-12-09T14:03:45.147 に答える
0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

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

于 2016-11-07T17:16:47.460 に答える
0

ストアドプロシージャを呼び出す方法は2つあります

  1. CALL database name'. 'stored procedure name(パラメーター値); 例:-CALL dbs_nexopay_sisd1_dec_23spr_v2_invoice_details_for_invoice_receipt_sub_swiss(1、1、1、1);

  2. MySQLワークベンチからもそれを行うことができます。私。ストアドプロシージャを右クリックします。ii。SQLエディターに送信iii。プロシージャコール。

于 2022-02-08T05:52:13.607 に答える
-3

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

于 2015-04-08T08:09:34.900 に答える
-8

ストアドプロシージャは、次の構文を使用してSQLDeveloperToolで実行できます。

BEGINprocedurename(); 終わり;

パラメータがある場合は、それを渡す必要があります。

于 2013-07-09T14:01:34.477 に答える
-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.
于 2013-12-17T11:06:53.323 に答える