这里是代码:
create function [dbo].[scalar_Disc]
()
returns int
as
begin
return (select( cast( rand() * 10 as int ) ) / 6 +1)
end
这个代码运行不了:
error是invalid use of a side-effecting operator 'rand' within a function.
好像是rand()的问题
请问1. 错在哪里?2. 如何更正?
求教~
------解决思路----------------------
-- 自定义函数中,不能使用 newid() , rand() 这两个函数,别的函数暂时未发现
-- 可以使用 getdate (),取出毫秒
drop function scalar_disc
go
create function [dbo].[scalar_Disc]
()
returns varchar(32)
as
begin
return (datepart(ms,getdate()) ^2 / 10 ) % 6 + 1
end
go
select [dbo].[scalar_Disc]()
go 10
开始执行循环
--------------------------------
5
(1 行受影响)
--------------------------------
4
(1 行受影响)
--------------------------------
6
(1 行受影响)
--------------------------------
2
(1 行受影响)
--------------------------------
4
(1 行受影响)
--------------------------------
3
(1 行受影响)
--------------------------------
5
(1 行受影响)
--------------------------------
4
(1 行受影响)
--------------------------------
4
(1 行受影响)
--------------------------------
3
(1 行受影响)
批处理执行已完成 10 次。
------解决思路----------------------
大不了用存储过程啊
alter procedure [dbo].[MYRAND]
as
begin
select cast( rand() * 10000 as int ) % 6
end
exec myrand