一个函数的问题。

kerer 2005-07-05 04:46:58
我想在一个函数内往一个表中的一列中INSERT进随机数

insert into table_A(f1, f2)
select
B.f1,
RAND(DATEPART(ms, GETDATE()))
from
table_B B

但老是提示“Invalid use of 'getdate' within a function.”
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2005-07-05
  • 打赏
  • 举报
回复
类似的道理,利用视图来做。
kerer 2005-07-05
  • 打赏
  • 举报
回复
那怎么在函数中产生随机数呢????
Frewin 2005-07-05
  • 打赏
  • 举报
回复
如果function 没有返回值,或返回值没实际作用,建议用procedure
Frewin 2005-07-05
  • 打赏
  • 举报
回复
同意paoluo(一天到晚游泳的鱼) ( )
631799 2005-07-05
  • 打赏
  • 举报
回复
declare @dt datetime
select @dt=getdate()

insert into table_A(f1, f2)
exec('select
B.f1,
RAND(DATEPART(ms, '+@dt+'))
from
table_B B')
paoluo 2005-07-05
  • 打赏
  • 举报
回复
可以定义一个视图,利用这个视图来实现你的效果。



create view v_getdate
as
select dt=Getdate()
go

--取得新编号的函数
create function f_nid(@head char(2))
returns char(14)
as
Begin
declare @dt DateTime
select @dt=@dt from v_getdate
insert into table_A(f1, f2)
select
B.f1,
RAND(DATEPART(ms, @dt))
from
table_B B
end
go
paoluo 2005-07-05
  • 打赏
  • 举报
回复
--不能在自定义函数中使用的函数
不允许在用户定义函数主体中内置不确定函数;这些不确定函数如下:

@@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
paoluo 2005-07-05
  • 打赏
  • 举报
回复
自定义函数中不能直接使用GetDate().
fengfangfang 2005-07-05
  • 打赏
  • 举报
回复
在函数里面不能使用GETDATE()和RAND()函数,因为这些函数的返回值是不确定的,而函数的返回值应该是确定的
631799 2005-07-05
  • 打赏
  • 举报
回复
函数中不能直接引用getdate().

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧