2017-09-27 8 views
0

私はMicrosoft SQL Serverを初めて使用しています。私は既存のプロシージャを呼び出さなければならず、シーケンスの次の値を渡したいと思います。またSQL Server:シーケンスの次の値を手続きに渡す

CREATE SEQUENCE mySeq START WITH 10000 CACHE 50; 

のように、私は

のような手順を作成し

私はシーケンスを作成した、:ここで

私のオブジェクトの大まかな概要と、私は値を渡したい方法

CREATE PROCEDURE P_MY_PROCEDURE 
    (@V_TECHNICAL_ID BIGINT, @V_VALUE VARCHAR(254)) 
AS 
BEGIN 
    INSERT INTO mytable (key, value) 
    VALUES (@v_technical_id, @v_value); 
[email protected] 

ここでは、上記の手順を次のように呼びます:

EXEC P_MY_PROCEDURE NEXT VALUE FOR mySeq, 'Some Value'; 

前の行を使用している間、私は次のエラーを取得:

[Error Code: 102, SQL State: S0001] Incorrect syntax near 'NEXT

何が間違っているの?他のRDBMS(Oracle、DB2など)では、問題なくプロシージャが動作する方法

答えて

1

ストアドプロシージャは、リテラル値または変数/パラメータでのみ呼び出すことができます。機能(ユーザー定義またはそれ以外)、またはその他のSQL構造体はありません。だから最初に何かにnext value for mySeqを割り当てなければなりません。この同じ現象の別の例は、getdate()を手続きに渡そうとする場合です。それはあなたをさせません。

これを試してみてください:

declare @seqval int = next value for myseq 

exec P_MY_PROCEDURE @seqval, 'some value' 
関連する問題