关键字 'AS' 预期 ID 附近的语法不正确


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

相关内容

最新更新