SQL 2000自定义函数调用GETDATE()报错
来源:互联网 发布:软件测试思路 编辑:程序博客网 时间:2024/04/26 16:01
use Tempdbgoif object_id('UserMTR') is not null drop table [UserMTR]gocreate table UserMTR(UserNo varchar(12) primary key , UserName nvarchar(50))gocreate function test_fun()returns char(12)as begin declare @Max char(12) select @Max=right('0000'+rtrim((isnull(max(right(UserNo,4)),0)+1)),4) from UserMTR where convert(varchar(8),getdate(),112)=left(UserNo,8) return convert(varchar(8),getdate(),112)+@Max endgoalter table UserMTR add constraint U_UserMTR_UserNO default (dbo.test_fun()) for UserNogoinsert userMTR (UserName) values(N'张三')goinsert userMTR (UserName) values(N'李四')select * from userMTRUserNo UserName------------ --------------------------------------------------200905150001 张三200905150002 李四(2 个资料列受到影响)
SQL 2000自定义函数调用GETDATE()报错
作者:潇湘隐者 来源:博客园 发布时间:2011-03-23 22:38 阅读:140 次 原文链接 [收藏]在SQL 2000数据库里的自定义函数中调用GETDATE()时,结果编译时报错,提示错误如下:Invalid use of 'getdate' within a function
我给个测试例子如下所示,
--================================================================================================
-- Author : Kerry
-- CreateDate : 2011-03-23
-- Description : 根据规则自动生成流水号
--------------------------------------------------------------------------------------------------
-- UpdateDate :
--------------------------------------------------------------------------------------------------
CREATE PROCEDURE USP_RiminSampleNoGenerate
@Type VARCHAR(10)
AS
SET NOCOUNT ON;
DECLARE @SampleNo AS VARCHAR(30);
DECLARE @Date AS VARCHAR(8);
DECLARE @SerialNumber AS VARCHAR(3)
BEGIN
SELECT @Date = CONVERT(VARCHAR(18),GETDATE(), 112);--业务规则处理ENDGO如果你把GETDATE() 改成dbo.GETDATE()则编译不会出错,但是调用该函数时会报错,错误提示如下所示:对象名 'dbo.GETDATE '
无效。
这是因为不允许在用户定义函数主体中内置不确定函数(确定性函数和不确定性函数大家可以参考MSDN文档介绍)。在SQL 2000里面有
两种解决方案:把GETDATE()函数作为自定义函数传入(如下所示)或定义获得当前时间的视图来解决这个问题。GETDATE()是不确
定函数。不过似乎在SQL 2005里面,自定义函数可以调用函数GETDATE(),如下所示,而且编译、调用时都不会出错。
--==============================================================================================
-- Author : Kerry
-- CreateDate : 2011-03-23
-- Description : 根据规则自动生成流水号
------------------------------------------------------------------------------------------------
-- UpdateDate :
------------------------------------------------------------------------------------------------
CREATE FUNCTION [dbo].[FUN_GenerateRaminiSampleNo](@Type VARCHAR(10), @DateTime DATETIME)
RETURNS VARCHAR(30)
AS
BEGIN
DECLARE @SampleNo VARCHAR(30);
DECLARE @Date VARCHAR(8);
DECLARE @SerialNumber VARCHAR(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
- SQL 2000自定义函数调用GETDATE()报错
- SQLServer 2000自定义函数中用getdate()报错
- Sql中的getDate()函数
- Sql 的getDate函数
- [转载]SQL Server用户自定义函数中如何使用Getdate()
- SQL中 getdate() 函数格式化
- SQL GETDATE()日期格式化函数
- SQL GETDATE()日期格式化函数
- SQL SERVER GETDATE()函数用法
- SQl的dateadd函数与getDate()函数
- 用getdate()函数自定义日期格式
- Sql中的getDate()函数的日期格式
- Sql语言中的日期格式化函数getDate()
- SQL Server函数datepart(DW, GETDATE())
- SQL GETDATE
- sql getdate()
- sql getdate()
- Java 调用 自定义函数SQL
- 基于Java多线程的下载器源码剖析(二)
- centos 6.2 android ndk r7 移植 ffmpeg 0.8.11
- C语言宏定义##连接符和#符的使用等等
- 关于eclipse的indigo版中文注释时字体太小的问题
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- SQL 2000自定义函数调用GETDATE()报错
- 常见数据库jdbc连接写法
- 几步在Linux上安装Tomcat
- mysql cluster
- 回文数-使用指针
- Tenda W541U V2.0 Wireless USB Adapter / Ralink RT2070 How To
- 数据挖掘之数据预处理
- .突破AD查询1000条限制
- 五一三天假