Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用UDF中的结果集插入到表变量中_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 使用UDF中的结果集插入到表变量中

Sql 使用UDF中的结果集插入到表变量中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个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 *

我有一个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',',')
      )
我在“')附近得到了
错误语法
,最后一个括号将
块括起来。函数将是确定性的,我不知道为什么会出现这个错误,因为

declare @drugName1 table(drugName1 varchar(50),drugName2 varchar(50))
insert into @drugName1(drugName1,drugName2)
values(
         (select 'one')
        ,(select 'two')
      )
select * from @drugName1
很好。我错过了什么


函数中的第二个参数是行的分隔符。SQL Server 2008

您的自定义项将返回一个包含3行的表。不能使用“VALUES”子句将3行1列放入表中。“VALUES”子句需要标量,这就是为什么“Select'one'”和“Select'two'”可以工作的原因

你不需要“价值观”,你只需要清楚地表达你的选择

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

不确定如何将3个值放入2列,这在您的问题中不清楚。另外,我不知道您的UDF的列名是什么,所以我假设为ColName。

使用select子句而不是values子句。此外,即使使用values子句,“select'one'中的“select”也没有必要。你可以简单地说“值('1','2')”。