要素名の変数


9

私は問題なく動作するこのtSQLコードを持っています:

SELECT 
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
  FROM [dnn].[dbo].[EventLog2] c

cross apply sss.nodes('/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")]') as a(b)

しかし、私ができるようにしたいのは、各値の間でORされる値の多くのペアの動的リストを渡すことです。

SELECT 
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
  FROM [dnn].[dbo].[EventLog2] c

cross apply sss.nodes(
'/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")
or
PropertyName=sql:variable("@a") and PropertyValue=sql:variable("@b")
]'
) as a(b)

これを行う方法はありますか?


1
私が理解していることを確認するために、@ cや@dなどもあるでしょうか?
wtjones 2012

回答:


2

変数リストまたは配列を必要とするパラメーターは、おそらくユーザー定義のテーブルタイプの良い候補です。タイプは次のように作成します。

CREATE TYPE [PropertyVariableTableType] AS TABLE (
    PropertyName nvarchar(255),
    PropertyValue nvarchar(255) )

テーブルタイプは、他のタイプと同様に、ストアドプロシージャのパラメータとして使用できます。その後、ユーザー定義のテーブルで結合するか、行を反復してクエリを動的に構築できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.