2017-09-27 67 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' 
相關問題