skicak array av ID'n till en proc
Jag vill kunna ta en array med ID'n som en parameter till en proc och uppdatera alla rader i db'n som har de ID'na??
Några ideer? skulel kanske gå med XML?
Svara
Sv: skicak array av ID'n till en proc
Array som 'datatyp' finns ej i SQL Server, dock finns det lösningar för problemet du beskriver. Ett är t ex något liknande detta:
------------------------
DECLARE @arrayids varchar(100)
DECLARE @sql varchar(8000)
SET @arrayids = '1,3,6,12,19'
SET @sql = 'UPDATE foo SET bar = bar * 2 WHERE bar IN (' + @arrayids + ')'
EXEC @sql
------------------------
Problemet med det är att det kräver dynamisk sql, vilket man gärna undviker. Andra bättre varianter innebär oftast att man på ett eller annat sätt splittar upp 'vektorn' (strängen i det här fallet) till flera rader i en temptabell, vilken man sedan joinar mot (eller använder i en subquery) för att bestämma vilka rader som ska uppdateras. En ny, inte så vältestad men snabb teknik för att splitta en sträng är att använda sig av SQL Servers xml-funktioner.
Läs svenske MVPn Erland Sommarskogs artikel om precis detta problem, det är en av de bästa jag läst angående detta. http://www.algonet.se/~sommar/examples_of_lists.html
Svara