我们可以编写一个带有create function语句的sql代码,这些语句一次一起运行吗?

时间:2017-07-21 16:05:17

标签: function sql-server-2012

我有一段代码(选择和删除表),我也使用函数。 但如果运行函数与其他代码,它说: -

  

创建功能必须是批处理中的唯一声明

那么我只能运行一次功能代码然后从每周工作代码中删除它(创建和删除表)吗? 或者我做其他事情。

这是我使用的功能之一: -

CREATE FUNCTION dbo.getyrs(@parm Integer)
RETURNS INTEGER
AS
BEGIN
RETURN @parm
END;

但是如果我在此之后使用drop函数它会出错(我不能同时运行drop并创建函数,就像我可以运行create和drop tables)

2 个答案:

答案 0 :(得分:1)

GO放在CREATE FUNCTION语句之前。

也将它放在任何其他创建对象的语句之前。

GO语句表示新Batch的开始,因此每当您收到有关某个语句如何成为批处理中的第一个语句或批处理中的唯一语句的错误时,您可以使用GO语句将代码分成批次。

此代码适用于我,没有错误:

Go 

CREATE FUNCTION dbo.getyrs(@parm Integer) 
RETURNS INTEGER 
AS 
BEGIN 
RETURN @parm 
END; 

GO 

DROP FUNCTION dbo.getyrs; 

答案 1 :(得分:0)

为什么需要继续创建和删除该功能。通常=您将创建一次,然后调用它,例如

SELECT schema.functionname(@paramatername)

或者您在外部应用或创建表等中引用它