Hej! Det knäppa med IN-kommandot är att det inte fungerar att skicka in en sträng. Jag minns faktiskt inte hur det löses på smartaste sättet men det behövs någon funktion som omvandlar strängen till numeriska fält och då går det bra.. Det finns två möjligheter.Range-parametrar till Stored Procedure
Om man exempelvis hämta bara några kunder från en tabell genom en Stored Procedure och vill skicka in kundnumrerna för dessa kunder som en parameter, går det? Alltså att ha en parameter som tar flera värden?
Eller måste man formatera dessa värden som en vanlig sträng?
CREATE PROCEDURE GET_CUSTOMERS(@ids...)
SELECT * FROM Customers WHERE CustomerID IN @ids
EXEC GET_CUSTOMERS 4,6,3,8,3,9
mvh PerSv: Range-parametrar till Stored Procedure
Kanske någon annan kan det här bättre?
har för mig du kan ha en sub-query...
select * from tabell where id in (select id from annantabell)Sv: Range-parametrar till Stored Procedure
Dynamisk sql
<code>
CREATE PROCEDURE GET_CUSTOMERS(@ids varchar(50))
as
exec('SELECT * FROM Customers WHERE CustomerID IN (' + @ids + ')')
EXEC GET_CUSTOMERS '4,6,3,8,3,9'
</code>
Funktionen split
Det finns flera implementationer som givet en sträng med kommaseparerade värden returnerar en tabellvariabel med de enskilda värdena. Om man söker på split och sql server så hittar man flera exempel.