2016-04-28 14 views

Antwort

3

können Sie diese article verweisen. Es gibt 5 Möglichkeiten, wie Sie es erreichen können:

Methode # 1 - Passing eine CSV: Liste von Strings als Parameter an einen (N) VARCHAR-Datentyp Parameter, dann Aufteilungs-/es in der SP-Parsing oder UDF, check here.

Methode # 2 - Übergeben einer XML: Zeichenfolge als XML-Datentypparameter. Wir müssen die XML im SP, check here analysieren.

Methode # 3 - Verwendung einer temporären Tabelle: in einem SP, der außerhalb seiner Ausführung erstellt wird. Hier muss kein Parameter mit dem SP, check here übergeben werden.

Methode # 4 - Mit TVPs: Mit SQL Server 2008 und höher Sie TVPs oder Tabelle Wertparameter und erklären sie unter Verwendung benutzerdefinierte Tabellentypen erstellen können. Diese TVPs können dann verwendet werden, um mehrere Datenzeilen an SPs oder UDFs zu senden, ohne eine temporäre Tabelle oder mehrere Parameter zu erstellen, check here.

Methode # 5 - Übergabe einer JSON-Zeichenfolge: als NVARCHAR-Datentypparameter. Wir müssen den JSON im SP check here analysieren.

Zum Beispiel das Verfahren 1 Beispiel aus der linked source:

-- As always I will use the AdventureWorks database<img width="16" height="16" class="wp-smiley emoji" draggable="false" alt=":)" src="https://s1.wp.com/wp-content/mu-plugins/wpcom-smileys/simple-smile.svg" style="height: 1em; max-height: 1em;"> 
USE [AdventureWorks2012] 
GO 

-- Create an SP with NVARCHAR(MAX) parameter: 
CREATE PROCEDURE uspGetPersonDetailsCSV (
    @persons NVARCHAR(MAX) 
) 
AS 
BEGIN 
    --DECLARE @persons NVARCHAR(MAX) 
    --SET @persons = 'Charles,Jade,Jim,Luke,Ken' 

    SELECT T.C.value('.', 'NVARCHAR(100)') AS [Name] 
    INTO #tblPersons 
    FROM (SELECT CAST ('<Name>' + REPLACE(@persons, ',', '</Name><Name>') + '</Name>' AS XML) AS [Names]) AS A 
    CROSS APPLY Names.nodes('/Name') as T(C) 

    SELECT BusinessEntityID, Title, FirstName, MiddleName, LastName, ModifiedDate 
    FROM [Person].[Person] PER 
    WHERE EXISTS (SELECT Name FROM #tblPersons tmp WHERE tmp.Name = PER.FirstName) 
    ORDER BY FirstName, LastName 

    DROP TABLE #tblPersons 
END 
GO 

-- No execute this SP by passing a list of values comma separated as a single string: 
EXEC uspGetPersonDetailsCSV 'Charles,Jade,Jim,Luke,Ken' 
GO 
-- Check the output, objective achieved<img width="16" height="16" class="wp-smiley emoji" draggable="false" alt=":)" src="https://s1.wp.com/wp-content/mu-plugins/wpcom-smileys/simple-smile.svg" style="height: 1em; max-height: 1em;"> 

-- Final Cleanup 
DROP PROCEDURE uspGetPersonDetailsCSV 
GO 
Verwandte Themen