So che questo non risponde alla vera domanda, ma tutte le soluzioni che ho visto per gestirlo sembrano un trucco sporco per aggirare le precedenti limitazioni di non essere in grado di passare più valori a una procedura. Dall'introduzione dei parametri con valori di tabella in sql-server 2008 non vedo alcun motivo per cui sarebbe necessaria una stringa delimitata all'interno di SQL:
Il primo passo è creare il tuo tipo per contenere i valori (tendo a usare nomi generici in modo che possano essere riutilizzati):
CREATE TYPE dbo.StringList AS TABLE (Value NVARCHAR(MAX));
Quindi crea la tua procedura:
CREATE PROCEDURE dbo.GetFromTable @OrgList dbo.StringList READONLY
AS
SELECT Something
FROM MyTable
WHERE Org + '-' + OrgSub IN (SELECT Value FROM @OrgList);
GO
Quindi puoi chiamare la tua procedura come segue
DECLARE @OrgList dbo.StringList;
INSERT @OrgList VALUES
('2342342', '________', 'A'),
('5435354', '________', 'B');
EXECUTE dbo.GetFromTable @OrgList;
Ciò consentirebbe anche l'opportunità di creare una tabella più appropriata:
CREATE TYPE dbo.OrgList AS TABLE(Org VARCHAR(10), OrgSub VARCHAR(10));
CREATE PROCEDURE dbo.GetFromTable @OrgList dbo.OrgList READONLY
AS
SELECT Something
FROM MyTable
WHERE EXISTS
( SELECT 1
FROM @OrgList O
WHERE MyTable.Org = o.Org
AND MyTable.OrgSub = o.OrgSub
);
GO
Quindi eseguire
DECLARE @OrgList dbo.OrgList;
INSERT @OrgList VALUES
('2342342', '________'),
('5435354', '________');
EXECUTE dbo.GetFromTable @OrgList;
Se è assolutamente necessario passare un elenco delimitato da virgole, è possibile convertirlo nel tipo StringList utilizzando la conversione XML e utilizzare la stessa procedura, ma l'utilizzo di un parametro con valori di tabella consente una flessibilità molto maggiore rispetto all'utilizzo di una stringa delimitata:
DECLARE @S VARCHAR(MAX) = '2342342-________,5435354-________,_______-________';
DECLARE @OrgList dbo.StringList;
INSERT @OrgList
SELECT Y.value('.', 'NVARCHAR(MAX)')
FROM (SELECT [X] = CAST(('<X>' + REPLACE(@S, ',' ,'</X><X>')+'</X>') AS XML)) X
CROSS APPLY X.nodes('X') AS y (Y)
EXECUTE GetFromTable @OrgList