SQL Serverで以下を実行する正しい方法は何ですか?複数の値をストアドプロシージャに渡す
Execute myStore @dept='dept1',@dept='dept2'
または
Execute myStore @dept in ('dept1','dept2')
SQL Serverで以下を実行する正しい方法は何ですか?複数の値をストアドプロシージャに渡す
Execute myStore @dept='dept1',@dept='dept2'
または
Execute myStore @dept in ('dept1','dept2')
あなたはこのarticleを参照することができます。その後、(N)VARCHARデータ型パラメータへのパラメータとして文字列のリスト、分割/ SPの内側にそれを解析: - CSVを渡す
方法#1:あなたはそれを達成することが可能な5つの方法があります。 またはUDF、check here。
方法2 - XMLデータ型パラメータとしてXML:stringを渡す。 SP内部のXMLを解析する必要があります。check here
方法3 - テンポラリテーブルを使用する:実行の直前に作成されたSPの内部。ここでは、 パラメータをSPに含める必要はありません。check here
方法#4 - TVPsの使用:SQL Server 2008のでは、あなたの上TVPsまたはテーブル値パラメータを作成し、 、ユーザー定義テーブル型を使用して、それらを宣言することができます。これらのTVPを使用して、 行のデータをSPまたはUDFに複数回送信することができます。ただし、テンポラリテーブルまたは複数の パラメータcheck hereを作成する必要はありません。
メソッド#5 - JSON文字列を渡す:NVARCHARデータ型パラメータとして渡します。 SP内のJSONを解析する必要があります。check here例えば
linked sourceからの方法1の例:
-- 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