2017-09-27 10 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'