在存储过程中怎么去判断随机数在48小时内不重复

sql存储过程中随机数48小时内不重复,重复了就重新生成,48小时后,就不管他有没有重复的了

哪位大哥救救急啊!

下面是我们老大给我的一个提示,但我不明白
if exists (select 1 from 表 where 48小时内)
我知道是存在的问题啊
随机数我是这样生成的
create function f(@bulen int)
returns varchar(4)
AS
begin
declare @r varchar(4)
if not(isnull(@bulen,0) between 0000 and 9999)
SET @bulen=4

lb_bh: --生成随机编号的处理
select @r=re from v_RAND
while LEN(@r)<@bulen
select @r=@r+re from v_RAND
set @r=left(@r,@bulen)

--检查编号在基础数据表中是否存在
if exists(select * from tb_SmsRelation with(XLOCK,PAGLOCK) where UsersID=@r)
goto lb_bh

return(@r)
end

但if exists (select 1 from 表 where 48小时内) 这句我怎么写啊,写在哪啊

表tb_SmsRelation中应该有CreateDate类似的字段记录该随机数最后一次产生的时间,这样if exists(select * from tb_SmsRelation with(XLOCK,PAGLOCK) where UsersID=@r)
修改为if exists(select * from tb_SmsRelation with(XLOCK,PAGLOCK) where UsersID=@r and datediff(hour,CreateDate,getdate()>48)即可
(上面是以SQL2005为例,如果是oracle,稍加修改即可)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-08
怕重复就用guid,既sql server里的newid函数生成的值,要得到重复的值基本上不可能,当然也有奇迹出现的时候
判断是不是过了48小时可以用datediff这个函数。datediff(hour,时间一,时间二)
第2个回答  2010-01-07
你不会翻译啊?
如果存在,中括号是条件。
第3个回答  2010-01-10
8496-*[L;OJUNM.P;OJ6DFTYHIP877TYY8-IU