首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

随机产生银行卡卡号,该怎么处理

2012-02-09 
随机产生银行卡卡号/*------产生随机数------------*//*要求:1产生银行卡卡号2前8位默认为“1010 3576”,

随机产生银行卡卡号
/*------产生随机数------------*/
/*要求:
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位的数过来不就好了.
[解决办法]

[解决办法]

热点排行