关于db2连接符||的问题

JS 2011-09-01 12:55:37
A.time = integer('''||VI_YM||''')和 A.time = '||VI_YM||' 这两种写法是我从存储过程里面抠出来的,我就是这边不理解

好吧!我举个例子:
(参数声明和定义等一些预操作我就不写了,直接写insert into后面的语句)
SET V_STMT='
INSERT INTO PERSON_COUNT_INFO(
SELECT TIME,
CITY_ID ,
COUNT(DISTINCT PERSON_ID) AS PERSON_COUNT,
FROM PERSON_INFO A
WHERE A.TIME=INTEGER('''||VI_YM||''') GROUP BY TIME,CITY_ID
)
WITH UR ';
EXECUTE IMMEDIATE V_STMT;

--注释 person_info 表中的time字段定义的是integer ,参数 VI_YM 定义的是传入的月份(字符型)如:'201007'
上面是随手写的统计某月份的人数的例子,问题就在这里。
A.TIME=INTEGER('''||VI_YM||''')
这句 用 A.TIME = '||VI_YM||' 也是正确的 ,其实我的问题就是||连接的问题,请高人帮忙看看,小弟在此侯音!多谢!
...全文
317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JS 2011-09-01
  • 打赏
  • 举报
回复
哦 ,我以为db2里面是两个 '' 转义为一个' 呢 ,啊…………太郁闷了,我好好参悟一下。非常感谢您!
zhaojianmi1 2011-09-01
  • 打赏
  • 举报
回复
三个单引号转义为一个
分解成五句话只是为了便于理解啊
JS 2011-09-01
  • 打赏
  • 举报
回复
前辈您好,您的解答我有点懂了,我想追问一下上面的分解的五句话就是我所问的根本原因吗?还有不是两’’转义为一个’吗?
zhaojianmi1 2011-09-01
  • 打赏
  • 举报
回复
请及时结贴

结帖率:0.00%
redspr 2011-09-01
  • 打赏
  • 举报
回复
这个是动态sql,你可以把V_STMT里拼的 sql 语句insert到表里,然后通过执行来检查动态sql是不是正确的,编译存储过程时是不会检查动态sql里的语法,所以,如果你少了个'',执行的时候就会报错
zhaojianmi1 2011-09-01
  • 打赏
  • 举报
回复
然后回答你
A.TIME=INTEGER('''||VI_YM||''')
A.TIME = '||VI_YM||'

假设VI_YM = '201007',出来的结果是
字符串:A.TIME=INTEGER('201007')
和字符串A.TIME=201007
zhaojianmi1 2011-09-01
  • 打赏
  • 举报
回复
首先明确变量VI_YM是字符,time字段是数字
然后看整句话:
SET V_STMT='
INSERT INTO PERSON_COUNT_INFO(
SELECT TIME,
CITY_ID ,
COUNT(DISTINCT PERSON_ID) AS PERSON_COUNT,
FROM PERSON_INFO A
WHERE A.TIME=INTEGER('''||VI_YM||''') GROUP BY TIME,CITY_ID
)
WITH UR ';
可以分开写成五句话:
SET V_STMT='
INSERT INTO PERSON_COUNT_INFO(
SELECT TIME,
CITY_ID ,
COUNT(DISTINCT PERSON_ID) AS PERSON_COUNT,
FROM PERSON_INFO A
WHERE A.TIME=INTEGER(';

SET V_STMT=V_STMT||''';
SET V_STMT=V_STMT||VI_YM;
SET V_STMT=V_STMT||''';
SET V_STMT=V_STMT||') GROUP BY TIME,CITY_ID
)
WITH UR ';

其中第二句和第四句的'''是转义为一个'

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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