CREATE OR ALTER FUNCTION dbo.insertdata (@t DATETIME)
AS
BEGIN
INSERT INTO table2 (*columns*)
SELECT *
FROM table1
WHERE CAST(date AS DATE) = CAST(@t AS DATE);
END
我遵循了如何创建函数,这个函数不会返回任何值,只会更新表。
显示的错误为:
关键字"AS"附近的语法不正确
当我悬停在错误处时,出现状态
"AS"附近的语法不正确。应为ID。
如何解决此问题?
您正在寻找Stored Procedure
,因为在任何编程语言中,Function
都应该返回值,而由于您的代码没有返回值,因此您应该使用Stored procedure
。
如果出现此错误,是因为函数需要返回一个值,我建议您使用存储过程。
CREATE PROCEDURE dbo.insertdata (@t DATETIME)-- Why you are using DATETIME here
AS
INSERT INTO table2 (*columns*)
SELECT *
FROM table1
WHERE CAST(date AS DATE) = CAST(@t AS DATE);--and cast it to DATE here
GO
此外,我认为不需要将@t
变量作为DATETIME
数据类型传递,然后将其强制转换为DATE
,只需将其声明为DATE
,就不需要强制转换。
所以你的存储过程是
CREATE PROCEDURE dbo.insertdata (@t DATE)
AS
INSERT INTO table2 (*columns*)
SELECT *
FROM table1
WHERE CAST(date AS DATE) = @t;
GO
您没有为函数设置返回值。
CREATE OR ALTER FUNCTION dbo.insertdata(@t datetime)
RETURNS @returnTable TABLE
( Field DECIMAL(38,6) null, Field2 DECIMAL(38,6) null )
AS
BEGIN
....
END