Während das Verständnis von Scoping das direkte Bedürfnis anspricht, könnte es sinnvoll sein, dem Mix einige weitere Optionen hinzuzufügen, um die Vorschläge aus den Kommentaren zu erläutern.
- Pass XML in die gespeicherte Prozedur
- Übergeben Sie einen Tabellenwertparameter in die gespeicherte Prozedur
1. Pass XML in die gespeicherte Prozedur
Mit XML in eine bestandene Parameter können Sie das XML direkt in Ihren SQL-Abfragen verwenden und anderen Tabellen beitreten/anwenden:
CREATE PROC sp_PassXml
@Xml XML
AS
BEGIN
SET NOCOUNT ON
SELECT T.Node.value('.', 'int') AS [Key]
FROM @Xml.nodes('/keys/key') T (Node)
END
GO
ein Aufruf der gespeicherten Prozedur für die Prüfung dann:
DECLARE @Text XML = '<keys><key>1</key><key>2</key></keys>'
EXEC sp_PassXml @Text
Beispiel für die Ausgabe einer einfachen Abfrage.
Key
-----------
1
2
2. Pass ein Tabellenwertparameter in die gespeicherte Prozedur
Zuerst müssen Sie den Benutzer definierten Art für die Tabelle Variable definieren, indem die gespeicherte Prozedur verwendet werden.
CREATE TYPE KeyTable AS TABLE ([Key] INT)
Dann Sie diese Art als Parameter für die gespeicherte Prozedur verwenden können (die READONLY
erforderlich, da nur IN
unterstützt wird und die Tabelle kann nicht geändert werden)
CREATE PROC sp_PassTable
@Keys KeyTable READONLY
AS
BEGIN
SET NOCOUNT ON
SELECT * FROM @Keys
END
GO
Die gespeicherte Prozedur kann dann mit einer Tabellenvariablen direkt aus SQL aufgerufen werden.
DECLARE @Keys KeyTable
INSERT @Keys VALUES (1), (2)
EXEC sp_PassTable @Keys
Hinweis: Wenn Sie .NET verwenden, dann können Sie die SQL-Parameter von einem Datatable-Typ übergeben Sie den benutzerdefinierten Typ entsprechen.
Beispielausgabe aus der Abfrage:
Key
-----------
1
2
Statt eine durch Kommata getrennte Liste an erster Stelle zugeben, haben Sie darüber nachgedacht, mit [Tabellenwertparameter] (http://technet.microsoft.com /en-us/library/bb510489.aspx)? Haben Sie auch [diesen Artikel] (http://www.sommarskog.se/share_data.html) gelesen? –
Oder XML, wie SQL Server bietet Unterstützung für XML-Datentyp ... –