Försöker köra en sp som tar in en två parametrar, @day int, @ExcludeList varchar(20) Eftersom du med in-satsen inte kan skjuta in en textmassa som är kommaseparerad i en sp precis som du säkert redan sett så kan du använda dig av två vägar.Dynamisk SQL
Listan ser ut så här: 1,2,4,5
Antar att jag måste bygg min fråga dynamiskt och för att göra detta möjligt...Har inte lyckats än. Koden finns nedan.
Exec('SELECT DISTINCT T.ID,T.synopsis,T.ticketDateTime,C.CLIENTNAME,P.project_name,U.realname,U.email
FROM XN_TICKET T
JOIN XN_PROJECT P ON T.PROJECT_ID = P.ID
JOIN XN_CLIENT_XN_PROJECT XN ON P.ID = XN.XN_PROJECTID
JOIN XN_CLIENT C ON XN.XN_CLIENTID = C.ID
JOIN XN_USER U ON T.submitById = U.ID
WHERE DATEDIFF(Day, ticketDateTime, GETDATE()) > ' + @days + '
AND T.ticket_type = 1
AND t.TimeAccepted = 0
AND t.status <> 4
AND T.archived = 0
AND C.ID NOT IN(' + @ExcludeList + ')
AND T.ID NOT IN(SELECT ID FROM xn_emailAlertsSent)')Sv: Dynamisk SQL
Antingen bygger du hela sqlkoden direkt och skickar den till databasen, alternativt låter du sp:n bygga sql-satsen och sen kör den. I båda fallen är det ju tyvärr så att sp:n tappar sitt syfte eftersom den inte kan bygga någon exekveringsplan.
<info>
CREATE Procedure test
@inData varchar(1500)
As
set nocount on
declare @utData varchar(1500)
set @utdata = 'select test from tabell where lista in (' + @utdata + ') order by test'
execute ( @utdata )
GO
</info>