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
时间: 2024-09-11 11:18:29

SQL 2000自定义函数调用GETDATE()报错的相关文章

SQL 2000自定义函数调用GETDATE()时报错

在SQL 2000数据库里的自定义函数中调用GETDATE()时,结果编译时报错,提示错误如下:Invalid use of 'getdate' within a function 我给个测试例子如下所示, --================================================================================================ -- Author : Kerry -- CreateDate : 2011-03-23 --

android-新手求助:安卓sql查找的函数,报错Nullpointerexception

问题描述 新手求助:安卓sql查找的函数,报错Nullpointerexception 代码如下 public User search(String username){ SQLiteDatabase sdb = helper.getReadableDatabase(); Cursor cursor =sdb.rawQuery("select * from user where username=?", new String[]{username}); if(cursor.moveTo

导入包 包自定义-JAVA 自定义类导入报错的问题。。。。

问题描述 JAVA 自定义类导入报错的问题.... 在学JAVA 用TXT文档编译运行的.先上环境设置,JAVA_HOME: C:Program FilesJavajdk1.8.0_60 CLASSPATH:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar; PATH:%JAVA_HOME%in; 我在E盘创建了一个文件夹,取名为com,又创建了1个子文件夹:sly. 一个Person类: package com.sly; public class P

pl/sql developer-PL/SQL Developer 远程连接Oracle 报错无法解析指定的标识符

问题描述 PL/SQL Developer 远程连接Oracle 报错无法解析指定的标识符 环境: 虚拟机中安装CentOS 6.3 CentOS安装Oracle 11gr2 客户机Win7 问题介绍: 已经在CentOS 启动了实例,监听: 开放了1521端口:虚拟机跟客户机网络连通: 使用DBVisualizer可以连接成功目标实例: PL/SQL Dev连接就报错"ORA-12154: TNS:could not resolve the connect identifier specifi

SQL嵌套查询语句的报错问题

问题描述 SQL嵌套查询语句的报错问题 5C String sql = ""select * from msgInfo where ID in(select top 15 ID from msgInfo where chatRoom=? Order by chatTime DESC) order by chatTime""; String userName=session.getAttribute(""_USER"").toS

sqlserver-mc sql server select 的时候报错,别的操作都可以

问题描述 mc sql server select 的时候报错,别的操作都可以 An error occurred while executing batch. Error message is: Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependenc

sql server 2008 r2 安装报错

问题描述 sql server 2008 r2 安装报错 请问解决方法 解决方案 重新下载一个sqlserver安装文件 解决方案二: 是不是你的安装文件有问题?从新下载个事实看,另外确定好位数 解决方案三: 找不到指定文件,建议换个安装盘

Sybase打开SQL Advantage 12.5.1报错:Internal failure while initializing

1 打开SQL Advantage报错:Internal failure while initializing SQL Advantage 前几天在用sybase win客户端(OC 12.5.1)的时候,遇到了一个问题.每次打开SQL Advantage 12.5.1后,如果强制关闭窗口(例如有时界面卡死强退),那么再次打开就会报错: 1.Internal failure while initializing SQL Advantage. 2.Please check that Open Cl

SQL Server2008安装中一些报错问题总结

SQL Server2008安装报错: system.diagnostics处理程序时出错是sql2008中安装时常碰到的问题,下面我来介绍解决办法. 在安装Sql Server 2008 R2的时候突然报错了,提示信息: 创建 system.diagnostics 的配置节处理程序时出错: 未能加载文件或程序集"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"或它的某一个依赖项.系统找