0

値の範囲を 1 組の SQL テーブルに挿入したいと考えています。データには前処理が必要です (共通のタイム スタンプを添付したり、両方のテーブルのデータを修正したりするなど)。理想的には、コードを直接の SQL ステートメントから保護し、代わりにストアド プロシージャを使用することを選びます。これらの値をストアド プロシージャに渡すにはどうすればよいですか?

ありがとうございました。

編集SQL Server 2012 を使用していますが、2008 と互換性を持たせたいと考えています。2012 固有の解決策がある場合は、お知らせください。喜んで検討します。

4

3 に答える 3

4

データを XML として送信し、複数の行に変換します。何かのようなもの

SELECT
Tbl.Col.value('(span/b)[1]', 'nvarchar(max)')   AS [key],
Tbl.Col.value('(span/var)[1]', 'nvarchar(max)') AS [position],
Tbl.Col.value('@title', 'nvarchar(max)')        AS [tooltip],
Tbl.Col.value('(code)[1]', 'nvarchar(max)')     AS [value]

FROM @xmlData.nodes('/ul/li') Tbl(Col)

詳細については、 を参照してください。

于 2013-11-01T18:49:08.563 に答える
3

SQL Server 2008+ 向けに開発している場合は、テーブル値パラメーターを使用できます。ドキュメントを参照してください

于 2013-11-01T18:45:47.927 に答える
3

ストアド プロシージャでは、テーブル値パラメーターを使用できます。これにより、テーブルをパラメーターとして渡すことができるため、必要に応じてパラメーターの構造を定義できます。

MSDN の「テーブル値パラメーターの使用 (データベース エンジン)」を参照してください - http://technet.microsoft.com/en-us/library/bb510489.aspx

このような SP を呼び出すには、たとえば、テーブル値パラメーターを .net コードからストアド プロシージャに渡す方法を参照してください。この質問は数回回答されました。

于 2013-11-01T18:46:34.277 に答える