1

複数の同じタイプの引数 (たとえば、例を単純にするために複数の ID) を照会できるようにしたいので、個々の ID ごとに 1 回ではなく、1 回だけプロシージャを実行する必要があります。単一インスタンス プロシージャがたとえば名前を返す場合、get-all プロシージャは名前の単一列テーブルを返します。

私が今持っているもの:

EXEC MyProc(123);
EXEC MyProc(456);
EXEC MyProc(789);

私が欲しいもの:

// Square brackets aren't correct syntax,
// they just represent a list that contains x number of IDs
EXEC MyProc([123, 456, 789]);  

私はこれを行うことができますか?もしそうなら、カーソルやさまざまな過度に複雑なものを含まないようなことを処理するための簡単なメカニズムはありますか? これは良い考えとさえ見なされますか?

4

1 に答える 1

0

プロシージャを 1 回だけ実行するには、プロシージャをリファクタリングして複数の ID を処理する必要があります。これを行うための T-SQL 関数やシンタックス シュガーがないからです。

1 つまたは複数の ID が存在する可能性があるという点でこれがバラディックである場合は、1 つのパラメーターで複数の ID を proc に渡す必要があります。最近のバージョンの SQL Server では、この並べ替えの配列の受け渡しがより簡単になる場合があります。

たとえば、次を渡すことができます。

  • SQL Server 2008+ のTVP
  • proc で分割される区切られた文字列
  • xml は、proc で解析されます
  • proc によって動的に読み取られるテーブル名
  • proc と呼び出し元の両方が事前に知っているテーブル名を使用する

配列を渡すための簡単な検索は、SQL Server でより多くの結果が得られることです。その中で最も優れているのは、@Andomar で言及されているように、SQL Server の配列とリストです。

于 2013-02-07T17:29:14.480 に答える