Capita spesso di dover passare una serie di valori a una store procedure T-SQL, da SQL Server 2016 è possibile farlo in questo modo

T-SQL: Store con STRING_SPLIT

CREATE PROCEDURE SpuGetResultByListId
	@listID nvarchar(MAX), -- lista valori separati da virgola
	@Separator varchar(1) = ','	-- separatore predefinito
AS
BEGIN
	SET NOCOUNT ON;

	SELECT *
	FROM [MSSql108718].[TbPages]
	WHERE ID in (
		SELECT value 
		FROM STRING_SPLIT(@listID, @Separator)
	);

END
Ovvero passando una stringa contenente degli identificativi separati da virgola che poi tramite la funzione T-SQL STRING_SPLIT vengono trasformati in tabella.
Il separatore va scelto con cura.
Se si tratta di identificatori numerici o Guid, la virgola va benissimo.
Ma se il separatore è di tipo stringa, bisogna assicurarsi che il carattere scelto come separatore non possa mai comparire nella stringa in input.
che può essere richiamata in questo modo

T-SQL: Esecuzione store

DECLARE @listID nvarchar(MAX) = '000E1D25-67EB-4456-8C52-BE1E723176B4,EDA4D28D-6141-4111-9D98-5EAAA5C654CE,2B19491D-3387-4760-815F-CCE506773CC'
DECLARE @Separator varchar(1) = ','

exec SpuGetResultByListId @listID, @Separator 
Il separatore può essere composto solo da 1 carattere.
Tags:
T-SQL66 SQL Server 201610 SQL90 SQL Server100
Potrebbe interessarti anche: