1

XMLパラメーターに基づいてフィールドを選択する動的SQLステートメントを作成する必要があります。

フィールド名を含む1つのパラメータ-[@FIELDSXML]を持つストアドプロシージャがあるとします。例えば...

フィールド1=名前

フィールド2=アドレスなど...

..実際には最大50個のフィールドがあり、XMLパラメーター内のフィールドについてのみレポートしたいと思います。

どうすればこのような簡単なステートメントを作成できますか。

select
  xmlParam1,
  xmlParam2,
  ...
  xmlParamN
from TABLE

等...

注意:データはc#の文字列配列から取得されています。

ありがとう!

4

1 に答える 1

0

配列をループして適切な SQL クエリを文字列として作成し、次にそれを実行します。たとえば、次のようになります。

DECLARE @SQL NVARCHAR(4000)

SET @SQL='select xmlParam1, xmlParam2... from Table'

EXEC(@SQL)

明らかに、そのSET @SQL部分は、配列をループして文字列を作成する場所になります。

編集

xml をループするには、最初に次のようなレコードセットを選択する必要があります。

DECLARE @productIds xml
SET @productIds ='<Products><id>3</id><id>6</id><id>15</id></Products>' 

SELECT ParamValues.ID.value('.','VARCHAR(20)')
  FROM @productIds.nodes('/Products/id') as ParamValues(ID)

次に、レコードセットを反復処理して、文字列を構築する必要があります。これを行うには、一時テーブルやカーソルを使用するなど、さまざまな方法があります。いくつかの例はここにあります。

于 2009-09-08T14:36:28.443 に答える