在SQL 2000数据库里的自定义函数中调用GETDATE()时,结果编译时报错,提示错误如下:Invalid use of 'getdate' within a function
我给个测试例子如下所示,
--================================================================================================ -- Author : Kerry -- CreateDate : 2011-03-23 -- Description : 根据规则自动生成流水号 -------------------------------------------------------------------------------------------------- -- UpdateDate : -------------------------------------------------------------------------------------------------- CREATEPROCEDURE USP_RiminSampleNoGenerate @TypeVARCHAR(10) AS SET NOCOUNT ON; DECLARE@SampleNoASVARCHAR(30); DECLARE@DateASVARCHAR(8); DECLARE@SerialNumberASVARCHAR(3) BEGIN SELECT@Date=CONVERT(VARCHAR(18),GETDATE(), 112); --业务规则处理 END GO
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/SQLServer/
如果你把GETDATE() 改成dbo.GETDATE()则编译不会出错,但是调用该函数时会报错,错误提示如下所示:对象名 'dbo.GETDATE '
无效。
这是因为不允许在用户定义函数主体中内置不确定函数(确定性函数和不确定性函数大家可以参考MSDN文档介绍)。在SQL 2000里面有
两种解决方案:把GETDATE()函数作为自定义函数的参数传入(如下所示)或定义获得当前时间的视图来解决这个问题。GETDATE()是不确
定函数。不过似乎在SQL 2005里面,自定义函数可以调用函数GETDATE(),如下所示,而且编译、调用时都不会出错。
--============================================================================================== -- Author : Kerry -- CreateDate : 2011-03-23 -- Description : 根据规则自动生成流水号 ------------------------------------------------------------------------------------------------ -- UpdateDate : ------------------------------------------------------------------------------------------------ CREATEFUNCTION[dbo].[FUN_GenerateRaminiSampleNo](@TypeVARCHAR(10), @DateTimeDATETIME) RETURNSVARCHAR(30) AS BEGIN DECLARE@SampleNoVARCHAR(30); DECLARE@DateVARCHAR(8); DECLARE@SerialNumberVARCHAR(3); SELECT@Date=CONVERT(VARCHAR(8),GETDATE(), 112); --编译出错 --SELECT @Date = CONVERT(VARCHAR(8),dbo.GETDATE(), 112); --调用出错 --SELECT @Date = CONVERT(VARCHAR(8), @DateTime, 112); --业务规则 END GO
作者:潇湘隐者
出处:http://www.cnblogs.com/kerrycode/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索编译
, 函数
, android运行时报错
, 编译出错
, getdate
, 流水号
, 规则
, 调用出错
, declare
, date出错
, 生成流水号
自调用
织梦自定义字段调用、dede自定义字段调用、mysql 调用自定义函数、phpcms自定义字段调用、python调用自定义函数,以便于您获取更多的相关知识。