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.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调用自定义函数,以便于您获取更多的相关知识。

时间: 2024-09-19 09:23:41

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

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

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

sql-SQL 2008 R2报表订阅时报错

问题描述 SQL 2008 R2报表订阅时报错 我通过报表服务建立了一个报表,然后进行订阅,一直发不出去,报如下错误:无法发送邮件: 服务器拒绝了发件人地址.服务器响应为: 530 5.7.1 Authentication required 将不重新发送邮件. 我已在报表服务中配置了邮件设置,同时数据库邮件中可以正确发送测试邮件.请大侠指导一下. 解决方案 认证有要求,是否有对应用户名和密码 解决方案二: 提示的信息为,需要认证,检查你的用户名.密码以及你的ip是否被加入黑名单了?

sql-将数据从SQL导出到Excel时报错

问题描述 将数据从SQL导出到Excel时报错 1C 将数据导出时,报错,说Application的Save方法无效.用OFFICE2013和WPS均报出相同错误,其他计算机上使用WPS可以成功导出数据,求大神指点. 解决方案 没有代码,怎么知道.excel可以直接导入外部数据的,你录个宏看看哪错了 解决方案二: vb.net 的DataGridView 数据导出到excel的例子,我们项目中一直使用的,可以看看有无帮助. ''' <summary>''' dgv导出至Excel''' <

sql server 08 r2数据库导入数据时报错,怎么解决

问题描述 sql server 08 r2数据库导入数据时报错,怎么解决 解决方案 不是文件缺失?建议查查. 解决方案二: 尝试以管理员模式运行sqlserver试试

sqlserver2008迁移-sql server2008数据导进mysql数据库时报错

问题描述 sql server2008数据导进mysql数据库时报错 我使用的是navicat for mysql工具导入:首先选择导入向导-->选择ODBC导入类型--->选择s数据源:sql server Native client for 10.0-->输入服务器名称.用户名.密码.数据库.点击测试连接时,显示链接成功.最后点确定时报错了:无法打开文件provider=sqlncli10........;server spn="":这个错误 怎么解决? 解决方案

log explorer-为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看。

问题描述 为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看. 解决方案 1.Lumigent Log Explorer for SQL Server v4.0.2 特别版下载地址http://down.chinaz.com/soft/7887.htm Log Explorer for SQL Server 4.2 注册码 wv5rc-uxvpz-e33-nr4694qs2 2.Log Explorer for SQL Server v4.0.2 安

sql server-安装SQL Server2014时报错 &amp;amp;quot;账户名与安全标识间无任何映射完成&amp;amp;quot;

问题描述 安装SQL Server2014时报错 "账户名与安全标识间无任何映射完成" 安装SQL Server2014时报错 "账户名与安全标识间无任何映射完成",怎么解决 解决方案 http://zhidao.baidu.com/link?url=9FHb8VHSaQ6wx9flYklrNbBI2-GPQsq_rVSMiIqatUUMDDw-uvuuUKKZIA-QeBc0pR08uJVjpABnDoB6wPQmQa

oracle-搜索功能遇到单引号时报错,怎么在sql语句中转译

问题描述 搜索功能遇到单引号时报错,怎么在sql语句中转译 String list_sql = "select rownum p_index,(select count(*) from tb_user) total,p.user_id,p.user_name,p.user_pwd,p.real_name,p.address," +"p.user_tel,p.isloginm,p.refresh_time,p.role_id,p.login_time,p.note,p.user

sql-db2使用用户自定义函数时报错

问题描述 db2使用用户自定义函数时报错 自定义函数如下:create function a(@sno char(6)) returns table(couname char(20)score int ) language sql reads sql data no external action deterministic return (select cnamescore from gradecourse where grade.sno=@sno and grade.cno=course.c