0

コンマ区切りのリストを取得して行に変換するUDFがあるので、の出力

select * from fnDrugSplit('one,two,three',',')

だろう

one
two
three

これらの結果をテーブル変数に挿入しようとすると

declare @drugName1 table(drugName1 varchar(50),drugName2 varchar(50))
insert into @drugName1(drugName1,drugName2)
values(
         (select * from fnDrugSplit('one,two,three',',')
        ,(select * from fnDrugSplit('one,two,three',',')
      )

Incorrect syntax near ')'ブロックを閉じる最後の括弧を取得しvaluesます。関数 will は決定論的であり、なぜこのエラーが発生するのかわかりません。

declare @drugName1 table(drugName1 varchar(50),drugName2 varchar(50))
insert into @drugName1(drugName1,drugName2)
values(
         (select 'one')
        ,(select 'two')
      )
select * from @drugName1

正常に動作します。ここで何が欠けていますか?

関数の 2 番目のパラメーターは、行の区切り文字です。SQL Server 2008

4

1 に答える 1

1

udf は 3 行のテーブルを返します。「VALUES」句を使用して、1 列の 3 行をテーブルに入れることはできません。「VALUES」句はスカラーを想定しているため、「Select 'one'」と「Select 'two'」が機能します。

「VALUES」は必要ありません。選択を明確にするだけです。

Insert into @drugName1
(drugName1, drugName2)
 select fn.ColName, fn.ColName
 from fnDrugSplit('one,two,three',',') fn

3 つの値を 2 つの列に入れる方法がわからないため、質問では明確ではありませんでした。また、UDF の列名がわからないので、ColName と仮定しました。

于 2013-05-24T19:41:23.400 に答える