存储过程默认参数问题
时间:2011-12-16
来源:互联网
创建一个存储过程,实现获取指定学号的所有课程成绩,输出为:学号、姓名、课程名、成绩,如果不指定学号,则输出所有学生的上述几个字段信息。
SQL code
xsb表字段:xh char(6),xm char(8),xb bit,cssj datetime
kcb表字段:kch char(3),kcm char(20)
cjb表字段:xh char(6),kch char(3),cj int
问题:当不输入参数时,居然输出了"学号不存在"的提示,于是我猜想可能是@xh为null,于是更成判断@xh是否为null,可是结果显示表明在不带参数时@xh不是null啊!这个让我很困惑啊!各位大仙帮帮我啊!
SQL code
create procedure query(@xh char(6)=xh) as if not exists(select * from xsb where xh=@xh) print '学号不存在' else begin select * from(select xsb.xh,xm,kcm,cj from xsb join cjb join kcb on cjb.kch=kcb.kch on xsb.xh=pcjb.xh) as temp(xh,xm,kcm,cj) where xh=@xh end execute query '081102'
xsb表字段:xh char(6),xm char(8),xb bit,cssj datetime
kcb表字段:kch char(3),kcm char(20)
cjb表字段:xh char(6),kch char(3),cj int
问题:当不输入参数时,居然输出了"学号不存在"的提示,于是我猜想可能是@xh为null,于是更成判断@xh是否为null,可是结果显示表明在不带参数时@xh不是null啊!这个让我很困惑啊!各位大仙帮帮我啊!

作者: wjbxngx 发布时间: 2011-12-16
@xh char(6)=null?
作者: patrickkong 发布时间: 2011-12-16
SQL code
--默认*为全部 create procedure query(@xh char(6) = '*') as if isnull(@xh,'*') = '*' begin select xsb.xh,xsb.xm,kcb.kcm,cjb.cj from xsb,cjb,kcb where cjb.kch = kcb.kch and xsb.xh = cjb.xh end else begin select xsb.xh,xsb.xm,kcb.kcm,cjb.cj from xsb,cjb,kcb where cjb.kch = kcb.kch and xsb.xh = cjb.xh and xsb.xh = @xh end
作者: jyh070207 发布时间: 2011-12-16
isnull()判断下看看
作者: szstephenzhou 发布时间: 2011-12-16
引用楼主 wjbxngx 的回复:
create procedure query(@xh char(6)=xh)
lz @xh变量都默认成xh 所以不是你猜想的null 不输人参数时 他就会默认@xh=xh create procedure query(@xh char(6)=xh)
作者: q465897859 发布时间: 2011-12-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28