No can do... MS SQL Server snakker ikke med Arrays (dvs. den har ingen datatype der kan virke som Array og kan derfor heller ikke modtage et Array som parameter, du er nødt til at klare det som os andre og lave en satans masse parametre, et til hver plads i arrayet)
Benyt et temporary table til at lægge værdierne ind i. Herefter kan du join\'e eller what ever med dette table. Eks.:
CREATE PROCEDURE multival @idliste varchar(8000), AS DECLARE @index int DECLARE @endindex int DECLARE @string varchar(8000) SET NOCOUNT ON
CREATE TABLE #TempTable (id INT PRIMARY KEY) SET @index = 1 WHILE @index > 0 BEGIN SET @index = CHARINDEX(\',\', @idliste) IF @index <> 0 SET @string = LEFT(@idliste, @index - 1) ELSE SET @string = @isliste
IF @index <> 0 SET @idliste = RIGHT(@idliste, LEN(@idliste) - (@index)) INSERT INTO #TempTable VALUES (CAST(@string AS INT)) END
whoop, bedre måde at lægge værdierne ind i temp table\'t - den benytter text istedet for varchar, så du kan have lange lister:
CREATE PROCEDURE tool_idtable @idlist text, @separator char(1) AS DECLARE @start int DECLARE @end int
SET NOCOUNT ON CREATE TABLE #idtable (id INT PRIMARY KEY) SET @start = 0 SET @end = 0 WHILE (1 = 1) BEGIN SET @start = @end + 1 SET @end = CHARINDEX(@separator, @idlist, @start)
IF @end > 0 INSERT INTO #idtable VALUES (CONVERT(INT, SUBSTRING(@idlist, @start, @end - @start))) IF @end = 0 BEGIN INSERT INTO #idtable VALUES (CONVERT(INT, SUBSTRING(@idlist, @start, DATALENGTH(@idlist) - @start + 1))) BREAK END END SET NOCOUNT OFF SELECT * FROM #idtable DROP TABLE #idtable
Kaldes med
exec tool_idtable \'123,456,789,233341\', \',\'
eller kan lægges ind i en stored procedure, så du kan genbruge tablet...
Yo, ikke for at træde i det men det her er en del mere optimalt. Dels slipper man for det overhead der er i en temporary table og så laver query optimizeren heller ikke OR optimization.
CREATE PROCEDURE get_postnr @idlist VARCHAR(4000) AS
SELECT Postnr FROM Postnr WHERE CHARINDEX(\',\' + CONVERT(VARCHAR(10), Postnr) + \',\', \',\' + @idlist + \',\') > 0
get_postnr \'800,900\'
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.