无法从函数的输出填充表

时间:2015-03-04 07:50:17

标签: sql-server function datatable

我无法从函数的输出中填充表格。我的表中有三列,即EmpId,Dates,EmpName。 EmpId和EMpName列是静态值,它们正在填充,但是Dates列必须通过函数填充。但是,当我尝试执行相同操作时,我收到语法错误。

请在下面查找我正在使用的查询

INSERT INTO Dbo.LeaveDates (EmpId,[Date],EmpName) VALUES(@EmpId,MyDate,@Emp_Name)
Select MyDate from [dbo].[ListDates](CONVERT(CHAR, @FromDate),CONVERT(CHAR, @ToDate))

我得到的错误也在:

  

*在此上下文中不允许使用名称“MyDate”。有效表达式是常量,常量表达式和(在某些上下文中)变量。   不允许使用列名。   *

我已声明所有有问题的变量

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你必须这样做:

INSERT INTO Dbo.LeaveDates (EmpId,[Date],EmpName) 
SELECT @EmpId, MyDate, @Emp_Name 
FROM [dbo].[ListDates](CONVERT(CHAR, @FromDate),CONVERT(CHAR, @ToDate))

您的查询基本上由两个单独的 sql语句组成。 INSERT INTO

INSERT INTO Dbo.LeaveDates (EmpId,[Date],EmpName) 
VALUES(@EmpId,MyDate,@Emp_Name)

后跟SELECT

SELECT MyDate 
FROM [dbo].[ListDates](CONVERT(CHAR, @FromDate),CONVERT(CHAR, @ToDate))

INSERT失败,因为正如错误消息明确指出的那样,MyDate在此上下文中不被允许,即作为单独的列名,而不是从表中选择。