当前位置: 代码迷 >> Sql Server >> 函数的有关问题,菜鸟的
  详细解决方案

函数的有关问题,菜鸟的

热度:110   发布时间:2016-04-27 21:39:24.0
函数的问题,初学者的
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()是不确定函数,自定义函数内不能使用不确定函数
  相关解决方案