Oracle转义符号

pengzhistar 2009-10-10 10:05:12
CREATE OR REPLACE PROCEDURE proc_ct_11(
quhao in varchar
)
IS
CURSOR ct_filter
IS
SELECT br_number, br_company
FROM ct_lsb
FOR UPDATE OF br_count;

v_br_number VARCHAR2 (128);
v_count PLS_INTEGER;
v_error VARCHAR2 (150);
v_br_company VARCHAR2 (150);
sub_br_number VARCHAR2 (128);
v_exit int;
BEGIN
OPEN ct_filter;
LOOP
FETCH ct_filter INTO v_br_number, v_br_company;
EXIT WHEN ct_filter%NOTFOUND;
IF instr(v_br_number,'/')=0
THEN
v_br_number:=SUBSTR (v_br_number, 6,7);
EXECUTE IMMEDIATE 'SELECT COUNT (*) INTO v_count FROM br_'||quhao ||' WHERE instr(br_number, '||v_br_number||')>0 OR br_company ='|| v_br_company;

……

最后的 EXECUTE IMMEDIATE 那个sql语句 由于v_br_number,v_br_company是varchar型 要执行的sql要加单引号 请问要怎么写才对?
...全文
203 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-10-10
  • 打赏
  • 举报
回复


execute immediate sql into v_count;

小灰狼W 2009-10-10
  • 打赏
  • 举报
回复
看清楚..3楼不是你那么写的
into要放要外面去
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
3楼的 那样拼写的sql有问题啊
'SELECT COUNT (*) INTO v_count FROM br_'||quhao ||' WHERE instr(br_number, ''' ||v_br_number||''')>0 OR br_company ='''|| v_br_company||'''';

必须要把COUNT (*) 赋值给v_count 但是EXECUTE IMMEDIATE 不认识v_count 了? 有什么方法解决吗
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
网速问题,我说的时候没看见已经有一个人了~~~~~~~
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
晕,我说的是#3楼
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
EXECUTE IMMEDIATE 'SELECT COUNT (*) INTO v_count FROM br_'||quhao ||' WHERE instr(br_number, '||chr(39)||v_br_number||chr(39)||')>0 OR br_company ='||chr(39)|| v_br_company||chr(39);
执行报错!ORA-00905: 缺少关键譭
vinsonshen 2009-10-10
  • 打赏
  • 举报
回复
要执行的sql要加单引号 请问要怎么写才对?

-----------------
这个是动态语句里面的写法问题,用2个单引号来表示即可,如想查询值为 field1='aaa' -->field1=''aaa''
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
学习啦,呵呵,楼上的是对的~~~
qin_phoenix 2009-10-10
  • 打赏
  • 举报
回复
chr(39)
小灰狼W 2009-10-10
  • 打赏
  • 举报
回复
EXECUTE IMMEDIATE 'SELECT COUNT (*) FROM br_'||quhao ||' WHERE instr(br_number, '''
||v_br_number||''')>0 OR br_company ='''|| v_br_company||''''
INTO v_count ;
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
EXECUTE IMMEDIATE 'SELECT COUNT (*) INTO v_count FROM br_'||quhao ||' WHERE instr(br_number, '||v_br_number||')>0 OR br_company ='|| v_br_company||';'
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
怎么没人啊
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
谢谢xinxin100198 找到问题所在了
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
在oracle里面 v_count number;
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
ORA-06502: PL/SQL: 数字或值错误
alice鑫鑫 2009-10-10
  • 打赏
  • 举报
回复
那不是这个地方的错,应该放到外面,放在里面不对的,你把错误说一下~~~~
pengzhistar 2009-10-10
  • 打赏
  • 举报
回复
放到外面 每次只能运行到一半 然后就会报错

17,134

社区成员

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

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