SQL 2000自定义函数调用GETDATE()时报错
|
在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.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/ (编辑:云计算网_汕头站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – SQL0469 IN,OUT或INOUT对过程中的参数2无效
- SQL中的表扫描和索引扫描
- Microsoft .Net Remoting系列教程之二:Marshal、Disconnect
- SQL Server与.NET异步处理中的异步处理
- sql-server – 模仿group_concat()与GROUP BY结合使用
- 江民推出KV2004 杀毒市场将进入点卡消费时代
- Windows Server 2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mys
- 建立安全模型以保护SQL Server
- 对比SQL Server中XML AUTO和T-SQL命令
- sql-server – 自动压缩/管理SQL Server 2005备份

