hej! Löste det genom att konkaternera ihop sql-satsen i själva sp:n. Hittade ett exempel i MSDN:SP-problem
Jag skriver på en stored procdure i sql server som skall utföra en sökning på företagsinformation och returnera data. Nu funderar jag på hur jag bäst löser sökningen när det gäller data som finns i en undertabell (personer) till huvudtabellen (företag) för sökningen.
I huvudtabellen finns alltså företagsinfo som företagets namn, nummer, bransch o.s.v. I undertabellen personer finns info om personer (namn, befattning o.s.v) som är kopplade till företaget, på varje företag kan finnas många personer.
I sökformuläret finns en lista på befattningar som personerna kan inneha och det är här jag funderar på hur jag bäst skall lösa det i sp:n. Antalet befattningar är inte fixerat, så jag kan inte ha en inputvariabel i sp:n för varje befattning och söka på den. Helst skulle jag vilja JOINA personer mot företag och skriva:
WHERE personer.befattning IN (@befattningar) , där @befattningar innhåller en sträng med t ex innehållet "0, 1, 3, 6, 7, 8"
Men det går ju inte. Helst vill jag inte använda någon cursor i sp:n, men det kanske är enda lösningen?
Annars funderar jag på att hämta ut alla rader utan selektering på befattning och sedan filtrera datasetet i programkoden istället. Vilket går snabbast att exekvera? Tacksam för idéer!
mvh
henrikSv: SP-problem
USE Northwind
DECLARE @SQLString NVARCHAR(500)
/* Set column list. CHAR(13) is a carriage return, line feed.*/
SET @SQLString = N'SELECT FirstName, LastName, Title' + CHAR(13)
/* Set FROM clause with carriage return, line feed. */
SET @SQLString = @SQLString + N'FROM Employees' + CHAR(13)
/* Set WHERE clause. */
SET @SQLString = @SQLString + N'WHERE LastName LIKE ''D%'''
EXEC sp_executesql @SQLString
GO
Funkar utmärkt.
/henrik