新人 简单的 PL/SQL 问题

热烈的红颜 2009-04-14 11:06:17
我写在一个包里面的
PROCEDURE GETINFO(S IN OUT STU,SN VARCHAR)
IS
BEGIN
SELECT * INTO S FROM student WHERE student.sno='001';
END GETINFO;
这样就可以
PROCEDURE GETINFO(S IN OUT STU,SN VARCHAR)
IS
BEGIN
SELECT * INTO S FROM student WHERE student.sno=SN;
END GETINFO;
我来调用
GETINFO(S,'001');
就出问题拉 说是没有数据发现,但是实际上是有数据的啊???
请各位帮忙解决
...全文
173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mosaic 2009-04-14
  • 打赏
  • 举报
回复
估计student.sno不是数值型,就是char类型。

如果是数值型的,那么可以如1楼的方法处理。 但是更好的方法是将SN的参数类型改成和数据库类型一致。
如果是char类型,建议修改数据库的字段类型,最好不用char。非得用的话,程序中where条件改为:trim(student.sno)=SN 或者 student.sno=rpad(sn,' ', nn),其中nn为该字段在数据库中的长度。 如果sno有索引,则用rpad的方式效率更高,可以用上索引。
yf520gn 2009-04-14
  • 打赏
  • 举报
回复
STU 是你自己定义的吗?
mumu_java 2009-04-14
  • 打赏
  • 举报
回复
student.son是什么类型?你的第一种方式应该是类型不匹配。如果是number类型要这样写。

PROCEDURE GETINFO(S IN OUT STU,SN VARCHAR)
IS
BEGIN
SELECT * INTO S FROM student WHERE student.sno=to_num('001');
END GETINFO;


17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧