oracle给变量赋值的问题,结果总是空

dongjunhui2010 2013-11-28 03:32:12
半天了还没解决,求大家帮助!
一个参数和两个变量:

pa_ibdoid nvarchar2

v_sql nvarchar2(50);
v_temp1 nvarchar2(50);

存储过程中写:

v_sql:=''''||pa_ibdoid||'-BH-%''';
execute immediate 'select max(ibooid) from busibo where ibooid like :1' into v_temp1 using v_sql;

结果v_temp1总是空的,不知道为什么?
...全文
377 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
漠北雁 2013-11-29
  • 打赏
  • 举报
回复

--单引号用多了
v_sql:=''''||pa_ibdoid||'-BH-%''';
--这一行改成
v_sql:=pa_ibdoid||'-BH-%';
--如果你在此处加上单引号,下面的using后面就不是一个变量了,而是一个固定字串,最终的like后面就是两重单引号。

  • 打赏
  • 举报
回复
引用 3 楼 robysomo 的回复:

--单引号用多了
v_sql:=''''||pa_ibdoid||'-BH-%''';
--这一行改成
v_sql:=pa_ibdoid||'-BH-%';
--如果你在此处加上单引号,下面的using后面就不是一个变量了,而是一个固定字串,最终的like后面就是两重单引号。

经过测试,确实是这样啊,不过不明白为什么“此处加上单引号,下面的using后面就不是一个变量了”,变量里的单引号怎么就导致变量到了using后变为非变量了
  • 打赏
  • 举报
回复
引用 3 楼 robysomo 的回复:

--单引号用多了
v_sql:=''''||pa_ibdoid||'-BH-%''';
--这一行改成
v_sql:=pa_ibdoid||'-BH-%';
--如果你在此处加上单引号,下面的using后面就不是一个变量了,而是一个固定字串,最终的like后面就是两重单引号。

you sure ?
  • 打赏
  • 举报
回复
using 所跟参数,根据数据格式 自动加单引号。
dongjunhui2010 2013-11-29
  • 打赏
  • 举报
回复
经过谷歌,问题已经解决了,就像robysomo说的一样,谢谢大家!
大话EPM 2013-11-28
  • 打赏
  • 举报
回复
引用 楼主 dongjunhui2010 的回复:
半天了还没解决,求大家帮助! 一个参数和两个变量:

pa_ibdoid nvarchar2

v_sql nvarchar2(50);
v_temp1 nvarchar2(50);
存储过程中写:

v_sql:=''''||pa_ibdoid||'-BH-%''';
execute immediate 'select max(ibooid) from busibo where ibooid like :1' into v_temp1 using v_sql;
结果v_temp1总是空的,不知道为什么?
我只看了你变量定义,为什么要用nvarchar2呢,有什么特殊的业务含义呢 如果否,你何不用varchar2试试,岂不更好
  • 打赏
  • 举报
回复
我测试了也是这样,也不明白

17,082

社区成员

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

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