2016-08-05 4 views
1

ストアドプロシージャを実行する動的SQLを実行するときにシーケンスから値を取得しようとしています。これもできますか?動的SQL:シーケンスの次の値が失敗する

私は、SQL Server 2014を使用していますここに私のエラーだ:

Msg 102, Level 15, State 1, Line 116
Incorrect syntax near 'NEXT'.

マイコード:

Declare @Script1 NVARCHAR(max); 
Declare @ScriptSP1 NVARCHAR(max); 
Declare @ScriptSeq1 NVARCHAR(max); 
Declare @ScriptExecSP1 NVARCHAR(max); 

Set @Script1 = N'Create table dbo.tblParentSponsor(
[ParentSponsorId] INT PRIMARY KEY, 
[Name] NVARCHAR(50) NOT NULL, 
[Surname] NVARCHAR(50) NOT NULL, 
[Cellphone_Number] CHAR(10) NOT NULL, 
[Telephone_Number] CHAR(10) NOT NULL, 
[Address] NVARCHAR(50) NOT NULL, 
[Region] NVARCHAR(50) NOT NULL, 
[Email] NVARCHAR(254) NOT NULL, 
[ID_Number] CHAR(13) NOT NULL 
);' 

EXEC sp_executesql @Script1; 

Set @ScriptSP1 = N'CREATE PROCEDURE dbo.[sp_Insert_Into_tblParentSponsor] 
@Id INT, 
@Name NVARCHAR(50), 
@Surname NVARCHAR(50), 
@Cellphone_Number CHAR(10), 
@Telephone_Number CHAR(10), 
@Address NVARCHAR(50), 
@Region NVARCHAR(50), 
@Email NVARCHAR(254), 
@ID_Number CHAR(13) 
AS 
BEGIN 
INSERT INTO dbo.tblParentSponsor(ParentSponsorId,Name,Surname,Cellphone_Number,Telephone_Number,Address,Region,Email,ID_Number) 
VALUES(@Id,@Name,@Surname,@Cellphone_Number,@Telephone_Number,@Address,@Region,@Email,@ID_Number) 
END' 

EXEC sp_executesql @ScriptSP1; 

SET @ScriptSeq1 = 'CREATE SEQUENCE dbo.TestS 
AS [int] 
START WITH 1 
INCREMENT BY 1' 

EXEC sp_executesql @ScriptSeq1; 

SET @ScriptExecSP1 = 'dbo.[sp_Insert_Into_tblParentSponsor] NEXT VALUE FOR dbo.TestS,S,S,1,1,1,1,1,1;' 

EXEC sp_executesql @ScriptExecSP1; 
+2

あなたは複数の問題があります。最初のパラメータは@Idでint型です。ただし、渡す最初の値はintではありません。文字列パラメータは引用符で囲まれていません。基本的に、エラーメッセージは正しいです。 –

答えて

0

はたぶんこれはあなたのために働くのでしょうか?

DECLARE @nextValue INT; 

SET @nextValue = NEXT VALUE FOR dbo.TestS 

SET @ScriptExecSP1 = 'dbo.[sp_Insert_Into_tblParentSponsor] ' + 
        CAST(@nextValue AS VARCHAR(10)) + 
        ',''S'',''S'',''1'',''1'',''1'',''1'',''1'',''1'';' 

EXEC sp_executesql @ScriptExecSP1; 

(どんなキャスティングまたはあなたが文字列に@nextValueを取得したいメソッドを変換に使用します。)

+0

試してくれてありがとう、私はそれをテストしたが、それは動作しません。私は、動的SQLを使用してパラメータを持つストアドプロシージャを実行できるとは思わない –

関連する問題