1

SQL 内の XML に関する知識が存在しないため、次のことについて助けが必要です。以下は、テーブルとデータを生成するためのテーブル スクリプトです。

XML には、name 属性が「RequiredField」の XML 要素があり、value 属性に含まれる値を返す TSQL 関数を作成する必要があります。誰でも助けてください。

CREATE TABLE [MyTable]
( [UniqueID] INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  [Description] VARCHAR(50) NOT NULL,
  [MetaData] XML NOT NULL )   
INSERT INTO [MyTable]
( [Description], [MetaData] )
SELECT  'My Description 1', '<properties xmlns="http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd"><item name="PropertyName" value="Property1" /><item name="RequiredField" value="true" /></properties>'
UNION
SELECT  'My Description 2', '<properties xmlns="http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd"><item name="PropertyName" value="Property2" /></properties>'

ご覧のとおり、2 行目にはその要素が含まれていないため、null 値を返す必要があります。私はクエリでぐるぐる回っているようで、名前空間の部分以外はあまり進歩していませんが、それでも正しいかどうかはわかりません。

だから、これに沿った何か

CREATE FUNCTION GetRequiredFieldValue(@uniqueID INT)
    RETURNS BIT
AS
...
4

1 に答える 1

2

これを試して:

create function GetRequiredFieldValue(@uniqueID INT) returns bit
as
begin
  declare @Ret bit;

  with xmlnamespaces(default 'http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd')
  select @Ret = MetaData.value('(/properties/item[@name = "RequiredField"])[1]/@value', 'bit')
  from MyTable
  where UniqueID = @UniqueID;

  return @Ret;
end
于 2013-01-09T08:15:15.180 に答える