这是题.......
2、 在pubs 数据库中创建员工资料表,表名:tbEmployeeInfo (如果存在多人同时使用同一数据库,表名可命名为:tbEmployeeInfo_自己名字的拼音全拼),表结构如下:
表名:tbEmployeeInfo
序号 字段名 字段类型 长度 是否允许空值 字段描述 约束
1 sID varchar 20 FALSE 编号 Primary key
2 sName varchar 20 TRUE 名称
3 sGender char 10 TRUE 性别
4 sIDCardNO varchar 20 FALSE 身份证号
5 dBirthDate datetime 8 TRUE 出生日期
6 iAge smallint 2 TRUE 年龄
7 sNativePlace varchar 20 TRUE 籍贯
8 sDiploma varchar 10 TRUE 学历
9 sRemark varchar 50 TRUE 备注
3、 创建存储过程:
在pubs 数据库中创建存储过程,名为:spGetBirthDate :
功能:通过传入身份证号返回其出生日期和当前年龄
输入参数:身份证号
输出:出生日期,年龄
说明:身份证号存在15位和18位两中情况,如果参数的位数不是这两种情况,则返回当前的日期,年龄为0:存储过程中暂不考虑身份证号中录入了非法的日期字符情况。身份证号规则如下,其中数字部分表示出生日期:
15位:XXXXX060314XXX
18位:XXXXX20060314XXXX
这是我编的存储过程....问题存在:我怎样才能把这个表中的字段全部显示出来?这样只能显示三个字段(dBrithDate,iAge,sGender)...请各位帮帮小妹啦.....
ALTER proc spGetBirthDatellp
@strIDCardNO varchar(20)
as
select
case len(@strIDCardNO)
when 15 then '19'+substring(@strIDCardNO,7,2)+'-'+substring(@strIDCardNO,9,2)+'-'+substring(@strIDCardNO,11,2)
when 18 then substring(@strIDCardNO,7,4)+'-'+substring(@strIDCardNO,11,2)+'-'+substring(@strIDCardNO,13,2)
end as dBrithDate,
case len(@strIDCardNO)
when 15 then (datepart(year,getdate())-substring(@strIDCardNO,7,2))-1900 --因为2000年以后出生的身份证位数都是18位,所以......^^
when 18 then year(getdate())-substring(@strIDCardNO,7,4)
end as iAge,
case (case len(@strIDCardNO)
when 15 then substring(@strIDCardNO,14,1)
when 18 then substring(@strIDCardNO,16,1)
end)%2
when 1 then '男' else '女'
end as sGender