1
CREATE PROCEDURE Usp_insertgender 
    (@gendervalues VARCHAR(MAX)) 
AS 
BEGIN 
    INSERT INTO sparsha.dbo.Genders ([GenderName]) 
    VALUES @gendervalues; 
END 

SQL Serverでストアドプロシージャを使用しますが、私はエラーを取得しています、単一のクエリで複数の行を挿入するにははどのように私は上記の手順を試してみました

メッセージ102、レベル15、状態1、プロシージャUsp_insertgender、行10
'@gendervalues'付近の構文が正しくありません。

私は( '1')、( '2')

答えて

3

として@gendervalues値を渡していますおそらく最も簡単な方法は、TVPを定義することです:

それを呼び出す方法
CREATE TYPE myTVPType AS TABLE(v VARCHAR(50)); 
GO 

CREATE PROCEDURE Usp_insertgender (@gendervalues myTVPType READONLY) 
AS 
BEGIN 
    INSERT INTO sparsha.dbo.Genders ([GenderName]) 
    SELECT v 
    FROM @gendervalues; 
END; 

DECLARE @tvp AS myTVPType; 

INSERT INTO @TVP (v) 
VALUES ('1'),('2'); 

EXEC Usp_insertgender @TVP; 
GO 
+0

(1)、(2)不適切な構文近くUsp_insertgenderを実行 手順取得中にエラーを実行しています '1'。 – guna

+0

こんにちはlad2025プロシージャを呼び出す方法の解決策を与えてくれてありがとう。 plzはパラメータを( '1')、( '2')として与え、複数の値を挿入することで、ストアドプロシージャ上でどのように呼び出すかを解決します。ここでの問題は、別の挿入クエリに依存します。 – guna

+0

'( '1')、( '2')としてパラメータを指定することで表示される唯一の方法は動的SQLですが、ここに表示するには巨大な反パターンになります。 – lad2025

0

QL)

CREATE PROCEDURE Usp_insertgender 
    (@gendervalues VARCHAR(MAX)) 
AS 
BEGIN 
    DECLARE @sql nvarchar(2000) 

    SET @sql = N'INSERT INTO sparsha.dbo.Genders ([GenderName]) 
    VALUES ' + @gendervalues 

    EXEC sp_executesql @sql 
END 
+0

ありがとうございました – guna

+0

@guna:こんにちは、あなたは2つの良い答えを受け取りました。そのうちの1つを受け入れてください –

+0

[SQLインジェクション](http://bobby-tables.com/)の可能性に注目する価値はあります。 – HABO

関連する問題