Un modo lungo sarebbe creare un wrapper che esegue questa operazione, una funzione che prende un elenco di stati e li aggiunge a una tabella finale che verrebbe restituita.
Si potrebbe anche avere tutto ciò che la tecnologia sta chiamando questa procedura fare il concatination di record (persone che hanno .NET aggiungere il set di risultati di ogni stato si sta cercando in)
Se stai bene con il passaggio in una lista di stati al tuo parametro 'stato', è possibile creare una query sql dinamica
CREATE PROCEDURE [dbo].[MyStored]
@state nvarchar(150)
AS
-- @state needs to be pre-formatted in a list for an in-clause
-- i.e. 1,2,10 (if it was a string list, you'd need to do use double single quotes around the items - ''1'',''2'',''10''
DECLARE @SQL nVarChar(5000) = '
SELECT blahblahblah
FROM LotsOfJoins
WHERE StoredState in (' + @state + ')'
exec sp_executeSql @sql
Questo funziona perfettamente per procedure semplici; sebbene, può richiedere più tempo per mantenere se le modifiche sono necessarie lungo la strada.
.
Ecco un CodeProject Article e un MS SQL Tips Article che fa un lavoro migliore di entrare nei dettagli
.
EDIT: Il @state param dovrà essere un nVarChar dal vostro passaggio in un elenco delimitato da virgole di valori int
fonte
2011-12-29 15:56:00
Stai bene con lo stato @ essere un elenco delimitato da virgole? (ad esempio, stato = '0,1') - la soluzione è diversa a seconda della risposta. –
@Ray K: Non sono sicuro, preferirei una soluzione facile da mantenere. – sharptooth
duplicato: http://stackoverflow.com/questions/5292069/union-the-results-of-multiple-stored-procedures – goric