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。
如何解决这个问题?
答案 0 :(得分:4)
您正在寻找Stored Procedure
,因为在任何一种编程语言中,Function
都应始终返回一个值,而由于您的代码没有,您应该使用{{ 1}}。
出现此错误是因为该函数需要返回一个值,我建议您改用存储过程。
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
答案 1 :(得分:1)
您没有为函数设置返回值。
CREATE OR ALTER FUNCTION dbo.insertdata(@t datetime)
RETURNS @returnTable TABLE
( Field DECIMAL(38,6) null, Field2 DECIMAL(38,6) null )
AS
BEGIN
....
END