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

如果你把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

相关文章
|
4月前
|
XML SQL 安全
Web渗透测试|SQL报错注入
Web渗透测试|SQL报错注入
49 1
|
8月前
|
SQL 数据库
SQL注入基础(报错注入及延时注入)
SQL注入基础(报错注入及延时注入)
66 0
SQL注入基础(报错注入及延时注入)
|
10月前
|
SQL 数据库
SQL server附加数据库报错
SQL server附加数据库报错
SQL server附加数据库报错
|
10月前
|
XML SQL 数据库
sql libs报错注入
sql libs报错注入
110 0
sql libs报错注入
|
11月前
|
SQL 数据库 Python
SQL server报错Invalid Colum name
用python连接SQL server数据库时报错invalid column name
SQL server报错Invalid Colum name
|
11月前
|
SQL 安全 关系型数据库
RDS SQL Server 备份恢复到本地报错:Cannot find server certificate with thumbprint
RDS SQL Server 备份恢复到本地报错:Cannot find server certificate with thumbprint
|
11月前
|
SQL 存储 关系型数据库
RDS For SQL Server删除数据库报错
RDS For SQL Server删除数据库报错
|
12月前
|
XML SQL 关系型数据库
|
SQL Oracle 网络协议
SQL Developer 连接 oracle数据库 报错 Io 异常 The Network Adapter could not establish the connection的三种解决方法
SQL Developer 连接 oracle数据库 报错 Io 异常 The Network Adapter could not establish the connection的三种解决方法
831 0
SQL Developer 连接 oracle数据库 报错 Io 异常 The Network Adapter could not establish the connection的三种解决方法
|
SQL 数据库 数据安全/隐私保护
SQL Server使用登录名连接数据库报错:18456
SQL Server使用登录名连接数据库报错:18456
428 0
SQL Server使用登录名连接数据库报错:18456
推荐文章
更多