kan man göra så här?? Det är samma sak som att skriva: Eeehh? Vad är sColumns egentligen? Är det en int eller en varchar?? Antar att du menar varchar, även om du skrivit int. Svaret är dock nej, det kan man inte. Du får göra det med dynamisk SQL, eller något helt annat sätt. ja det ska vara varchar :-) CREATE PROCEDURE test (@sColumns varchar(100)) HejsanIN med parameter i stored procedure
CREATE PROCEDURE test (@sColumns int)
AS
SELECT value from tabell where varde2 IN (@sColumns)Sv: IN med parameter i stored procedure
CREATE PROCEDURE test (@sColumns int)
AS
SELECT value from tabell where varde2 = @sColumns
Är det det du är ute efter?
Du kan tyvär inte skicka arrayer med värden. Utan måste skicka värden var för sig.
CREATE PROCEDURE test (@Value1 int, @Value2 int)
AS
SELECT value from tabell where varde2 IN(@Value1, @Value2)
Har inte kikat på tabell variabler. KAnske kan vara en lösning.Sv: IN med parameter i stored procedure
Sv: IN med parameter i stored procedure
frågan är hurm man ska göra då eftersom det är dynamiskt antal parametrar och det går väl inte??Sv: IN med parameter i stored procedure
AS
EXEC('SELECT value from tabell where varde2 IN (' + @sColumns + ')')
/JohanSv: IN med parameter i stored procedure
Om det är SQL Server 2000 du kör, prova denna egendefinerade funktion som returnerar en tabell.. Den splittar upp en sträng med kommaseparerade heltal.. Beroende på hur lång strängen kan du byta ut text till varchar, samt DATALENGTH() mot LEN()...
Ex..
SELECT *
FROM Users
WHERE UserID IN (SELECT Value FROM fnINList('1,2,3,4,5,6,7,8,9'))
CREATE FUNCTION fnINList
(
@Childlist text
)
RETURNS @Table TABLE (Value int)
AS
BEGIN
DECLARE @Counter int, @Char char(1), @Number varchar(100), @Length int
SET @Counter = 1
SET @Number = ''
SET @Char = ''
SET @Length = DATALENGTH(@Childlist)
WHILE @Counter <= @Length
BEGIN
SET @Char = SUBSTRING (@Childlist, @Counter, 1)
IF @Char = ','
BEGIN
INSERT @Table(Value) VALUES(@Number)
SET @Number = ''
END
ELSE
SET @Number = @Number + @Char
SET @Counter = @Counter + 1
END
INSERT @Table(Value) VALUES(CONVERT(int, @Number))
RETURN
END