ORACLE字符串拼接问题

a1326415364 2015-07-10 05:22:50
我在SQL WINDOW执行以下代码,得到的值是1

SELECT count(1) FROM tm_t_index_mate t WHERE t.INDEX_KEY IN ('你','我') AND t.data_type like 'A%';

但是类似代码在COMMAND WINDOW中拼接就出问题,得到的值为0
代码如下:
DECLARE
inattr varchar2(50) := '''你'',''我''';
summ number(5);
BEGIN
SELECT count(1) into summ FROM tm_t_index_mate t WHERE t.INDEX_KEY IN (inattr) AND t.data_type like 'A%';
dbms_output.put_line(summ);
END;
/

打印的summ为0;

是我拼接不对还是怎么回事?
SELECT count(1) into summ FROM tm_t_index_mate t WHERE t.INDEX_KEY IN (inattr) AND t.data_type like 'A%';
这段语句我是预备在存储过程中用的,拿到COMMAND测试先,一直不行,望大神们帮我解决
...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayanzs 2015-07-13
  • 打赏
  • 举报
回复

DECLARE
inattr varchar2(50) := '''你'',''我''';
sql_str varchar2(100);
summ number(5);
BEGIN
sql_str:='SELECT count(1) FROM tm_t_index_mate t WHERE t.INDEX_KEY IN ('||inattr||') AND t.data_type like ''A%''';
execute immediate sql_str into summ;
dbms_output.put_line(summ);
END;
jdsnhan 2015-07-13
  • 打赏
  • 举报
回复
in条件后面的内容是个列表,你这样拼接完就是个字符串了。可以考虑用like或者or来事先
碧水幽幽泉 2015-07-11
  • 打赏
  • 举报
回复
t.INDEX_KEY IN (inattr) 为什么不换成 t.INDEX_KEY IN ('你','我')呢?
a1326415364 2015-07-11
  • 打赏
  • 举报
回复
通不通过我难道没试过?,而且问题不是在通不通过上面,是拼接问题,看问题来回答
YonGJX 2015-07-11
  • 打赏
  • 举报
回复
存储过程里面的inattr仅是一个varchar2类型的值,而不会代表“你”和“我”两个值。
wangshengbo1316 2015-07-10
  • 打赏
  • 举报
回复
难道变量inattr在存储过程中这么定义,能编译通过?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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