我无法从函数的输出中填充表格。我的表中有三列,即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”。有效表达式是常量,常量表达式和(在某些上下文中)变量。 不允许使用列名。 *
我已声明所有有问题的变量
我做错了什么?
答案 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
在此上下文中不被允许,即作为单独的列名,而不是从表中选择。