可是在程序中调用,报错,错误为“超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)。”CREATE procedure ProductRandomSKU
as
declare @randCardID varchar(20)
declare @r numeric(15,8)
declare @tempStr char(10)
select @r=rand((datePart(mm, getDate()) * 100000 )+ (datePart(ss, getDate()) * 1000 ) + datePart(ms, getDate()))
set @tempStr=convert(char(10),@r)
set @randCardID=substring(@tempStr,4,7)
if not exists(select 1 from CollectProduct where sku=@randCardID)
begin
select @randCardID
return;
end
else
begin
exec ProductRandomSKU
endGO
as
declare @randCardID varchar(20)
declare @r numeric(15,8)
declare @tempStr char(10)
select @r=rand((datePart(mm, getDate()) * 100000 )+ (datePart(ss, getDate()) * 1000 ) + datePart(ms, getDate()))
set @tempStr=convert(char(10),@r)
set @randCardID=substring(@tempStr,4,7)
if not exists(select 1 from CollectProduct where sku=@randCardID)
begin
select @randCardID
return;
end
else
begin
exec ProductRandomSKU
endGO
exec ProductRandomSKU
end是不是老是执行这了,死循环了
select id = right('00000000' + cast(cast(rand(checksum(newid()))*10000000 as int) as varchar),8) from sysobjects--四位随机整数的生成
select id = cast(RAND() * 10000 as int)--随机生成一个70到99的数
cast(RAND() * 100 as int) % 30 + 70--8000到20000随机的数
select ceiling (rand()*(20000-8000)+8000)
--小写
select char(rand()*26+97)--大写
select char(rand()*26+65)
@minNumber int, --随机数最小值
@rows int --要取得的行数
select @maxNumber=10000, @minNumber=10000,
@rows=10
set rowcount @rows
select distinct '1234 4567 '+convert(varchar,ID)+' '+convert(varchar,ID)+' '+convert(varchar,ID)+' '+convert(varchar,ID) as 'B'
from (
select convert(int,rand(checksum(newid()))*@minNumber) as ID
from syscolumns,sysobjects
)t
set rowcount 0
-----------------------------------------------------------------------
declare @num1 int ,@num2 int ,@num3 int ,@num4 int
set @num1=rand(abs(convert(int,checksum(newid()))))*10000
set @num2=rand(abs(convert(int,checksum(newid()))))*10000
set @num3=rand(abs(convert(int,checksum(newid()))))*10000
set @num4=rand(abs(convert(int,checksum(newid()))))*10000
select convert(varchar(100),@num1)+' '+convert(varchar(100),@num2)+' '+convert(varchar(100),@num3)+' '+convert(varchar(100),@num4)
---------------------------------------------------------------------------
declare @r1 numeric (15,0),@r2 numeric (15,0)
SELECT @r1=RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )*10000
print @r1
as
declare @randCardID varchar(20)
declare @r numeric(15,8)
declare @tempStr char(10)
select @r=rand((datePart(mm, getDate()) * 100000 )+ (datePart(ss, getDate()) * 1000 ) + datePart(ms, getDate()))
set @tempStr=convert(char(10),@r)
set @randCardID=substring(@tempStr,4,7)
while not exists(select 1 from CollectProduct where sku=@randCardID)
begin
select @randCardID
return;
end
else
begin
select @r=rand((datePart(mm, getDate()) * 100000 )+ (datePart(ss, getDate()) * 1000 ) + datePart(ms, getDate()))
set @tempStr=convert(char(10),@r)
set @randCardID=substring(@tempStr,4,7)
endGO