随机产生银行卡卡号
/*------产生随机数------------*/
/*要求:
1>产生银行卡卡号
2>前8位默认为“1010 3576”,代表北京市工商银行
*/
if exists(select * from sysobjects where name='proc_randCardID')
drop procedure proc_randCardID
go
create procedure proc_randCardID
@randCardID varchar(19) output--定义输入参数
as
declare @r numeric(15,8) --15位数,保留8位小数
select @r=rand((datepart(mm,getdate())*100000)+(datepart(ss,getdate())*1000)+
datepart(ms,getdate()))--随机产生后8位的卡号
print convert(varchar(11),@r)
set @randCardID='1010 3576 ' +substring(convert(varchar(10),@r),3,4)+' '
+substring(convert(varchar(10),@r),4,6)
go
declare @mycardID char(19)
exec proc_randCardID @mycardID output
print '产生的随机卡号为:' + @mycardID
[解决办法]
我记得是有规律的 你好象还不知道吧
[解决办法]
/*卡号随机产生*/
create proc proc_randmon
(
@outID varchar(19) output --要生成的卡号
)
as
declare @inID varchar(19)
set @inID='6225 8802'
declare @randmon numeric(18,16) --随机生成的卡号
set @randmon=rand(datepart(dd,getdate())*10000+datepart(ss,getdate())*1000+datepart(ms,getdate()))
set @outID=@inID+' '+substring((convert(varchar,@randmon)),3,4)+' '+substring((convert(varchar,@randmon)),7,4)
go
declare @randNum varchar(19)
exec proc_randmon @randNum output
print '生成的卡号:'+convert(varchar,@randNum)
这个是正确的,你的有点问题啊你看看
[解决办法]
use master
go
if(select*from sysobjects where name='proc_randcardid')
create proc proc_randcardid --创建存储过程
@outID varchar(19) output --要生成的卡号
as
declare @inID varchar(19)
declare @cardid varchar(19)
set @inID='6225 8802'
declare @randmon numeric(18,8) --随机种子
set @randmon=rand(datepart(dd,getdate())*10000+datepart(ss,getdate())*1000+datepart(ms,getdate()))
set @cardid=convert(varchar(10),@randmon)
set @outID=@inID+' '+substring( @cardid,3,4)+' '+substring(@randmon,7,4)
go
declare @randNum varchar(19)
exec proc_randcardid @randNum output
print '生成的卡号:'+convert(varchar,@randNum)
[解决办法]
学习
[解决办法]
这是北大青鸟S2的课程吧,呵呵...在运行时连续运行,可以产生好几十个相同的卡号,根本不能算是随机的.
直接用产生0-1之间随机数的,然后切两次4位的数过来不就好了.
[解决办法]
顶
[解决办法]
顶