/ / Come inserire più righe in una singola query utilizzando una procedura memorizzata in SQL Server - sql-server, sql-server-2008, tsql, stored procedure, sql-server-2005

Come inserire più righe in una singola query utilizzando una stored procedure in SQL Server: sql-server, sql-server-2008, tsql, stored-procedures, sql-server-2005

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

Ho provato sopra la procedura ma sto ricevendo un errore

Messaggio 102, livello 15, stato 1, procedura Usp_insertgender, riga 10
Sintassi errata vicino a "@gendervalues".

Sto passando @gendervalues valori come ("1"), ("2")

risposte:

3 per risposta № 1

Probabilmente il modo più semplice è definire 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;

Come chiamarlo:

DECLARE @tvp AS myTVPType;

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

EXEC Usp_insertgender @TVP;
GO

1 per risposta № 2

Prova questo: (con SQL dinamico)

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