函数的问题,初学者的
create function tt (@tt varchar(5))
RETURNS varchar(5)
as
begin
set @tt=(select convert(varchar(5),dateadd(minute,rand()*60, '08:00 '),14))
return(@tt)
end
会出现
服务器: 消息 443,级别 16,状态 1,过程 tt,行 5
在函数内不正确地使用了 'rand '。
[解决办法]
rand()*60改成round(rand()*60,0)
[解决办法]
把那个添加至提取出来,加个变量
declare @timetoadd int
set @timetoadd =round(rand()*60,0)
set @tt=(select convert(varchar(5),dateadd(minute,@timetoadd, '08:00 '),14))
[解决办法]
up
[解决办法]
return(@tt) 换成return:)
[解决办法]
create function tt (@tt varchar(5))
RETURNS varchar(5)
AS
BEGIN
SELECT @tt=CONVERT(VARCHAR(5),DATEADD(minute,ROUND(RAND()*60,0), '08:00 '),14)
RETURN @tt
END
[解决办法]
还真是没法通过,
还是加变量把~
[解决办法]
不允许在用户定义函数主体中内置不确定函数;这些不确定函数如下:
@@CONNECTIONS @@TOTAL_ERRORS
@@CPU_BUSY @@TOTAL_READ
@@IDLE @@TOTAL_WRITE
@@IO_BUSY GETDATE
@@MAX_CONNECTIONS GETUTCDATE
@@PACK_RECEIVED NEWID
@@PACK_SENT RAND
@@PACKET_ERRORS TEXTPTR
@@TIMETICKS
[解决办法]
10楼的wangdehao已经说过了,rand()是不确定函数,自定义函数内不能使用不确定函数