ITPUB??ì3
ITPUB论坛 » Oracle开发 » 动态执行语句

标题: 动态执行语句
离线 lvbomr
中级会员



精华贴数 0
个人空间 0
技术积分 688 (2719)
社区积分 0 (517387)
注册日期 2005-7-17
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-24 14:48 
动态执行语句

用dbms_sql.parse,动态执行如下语句
create materialized view W_MV_STAT_BILL_TEMP1
REFRESH complete ON DEMAND
START WITH SYSDATE NEXT round(SYSDATE+0.5)+1/16
as
select a.extend1,a.make_date,a.description,nvl(a.extend2,0) as extend2
from w_tbl_log a, W_TBL_STAT_SYS_LOG b
where substr(EXTEND1,6,instr(EXTEND1,'<br>')-6)=b.login;


因为含有'<br>',总报错请问如何转换?


只看该作者    顶部
离线 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4786 (275)
社区积分 32783 (25)
注册日期 2007-9-10
论坛徽章:26
金色在线徽章生肖徽章:猪    
      

发表于 2008-6-24 14:54 
用'''代替'


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
离线 visual2006



精华贴数 0
个人空间 0
技术积分 768 (2427)
社区积分 4 (18174)
注册日期 2006-7-23
论坛徽章:1
      
      

发表于 2008-6-24 14:54 
用CHR()


只看该作者    顶部
离线 lvbomr
中级会员



精华贴数 0
个人空间 0
技术积分 688 (2719)
社区积分 0 (517387)
注册日期 2005-7-17
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-24 16:18 
dbms_sql.parse(sql_cursor, 'create materialized view W_MV_STAT_BILL_TEMP1
REFRESH complete ON DEMAND
START WITH SYSDATE NEXT round(SYSDATE+0.5)+1/16
as
select a.extend1,a.make_date,a.description,nvl(a.extend2,0) as extend2
from w_tbl_log a, W_TBL_STAT_SYS_LOG b
where substr(EXTEND1,6,instr(EXTEND1,'''<br>''')-6)=b.login)', dbms_sql.v7);

报如下错误:
PLS-00103: 出现符号 ">"在需要下列之一时:   . ( ) , * @ % & - + / at mod     remainder rem <an exponent (**)> and or || multiset


只看该作者    顶部
离线 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4786 (275)
社区积分 32783 (25)
注册日期 2007-9-10
论坛徽章:26
金色在线徽章生肖徽章:猪    
      

发表于 2008-6-24 16:20 
那'<','>' 用chr(60)和chr(62)代替掉


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
离线 lvbomr
中级会员



精华贴数 0
个人空间 0
技术积分 688 (2719)
社区积分 0 (517387)
注册日期 2005-7-17
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-24 16:46 
dbms_sql.parse(sql_cursor, 'create materialized view W_MV_STAT_BILL_TEMP1
REFRESH complete ON DEMAND
START WITH SYSDATE NEXT round(SYSDATE+0.5)+1/16
as
select a.extend1,a.make_date,a.description,nvl(a.extend2,0) as extend2
from w_tbl_log a, W_TBL_STAT_SYS_LOG b
where substr(EXTEND1,6,instr(EXTEND1,chr(60)||'br'||chr(62))-6)=b.login;
还是报如下错误:
PLS-00103: 出现符号 "BR"在需要下列之一时:   ) , * & | = - + < / > at in     is mod remainder not rem => .. <an exponent (**)>     <> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_     between || multiset member SUBMULTISET_


只看该作者    顶部
离线 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4786 (275)
社区积分 32783 (25)
注册日期 2007-9-10
论坛徽章:26
金色在线徽章生肖徽章:猪    
      

发表于 2008-6-24 16:53 
try this:substr(EXTEND1,6,instr(EXTEND1,chr(39)||chr(60)||br||chr(62)||chr(39))-6)=


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
离线 lvbomr
中级会员



精华贴数 0
个人空间 0
技术积分 688 (2719)
社区积分 0 (517387)
注册日期 2005-7-17
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-24 17:38 
dbms_sql.parse(sql_cursor, 'create materialized view W_MV_STAT_BILL_TEMP1
REFRESH complete ON DEMAND
START WITH SYSDATE NEXT round(SYSDATE+0.5)+1/16
as
select a.extend1,a.make_date,a.description,nvl(a.extend2,0) as extend2
from w_tbl_log a, W_TBL_STAT_SYS_LOG b
where substr(EXTEND1,6,instr(EXTEND1,chr(39)||chr(60)||br||chr(62)||chr(39))-6)=b.login', dbms_sql.v7);
还是报错。


只看该作者    顶部
离线 lvbomr
中级会员



精华贴数 0
个人空间 0
技术积分 688 (2719)
社区积分 0 (517387)
注册日期 2005-7-17
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-25 09:06 



只看该作者    顶部
离线 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4786 (275)
社区积分 32783 (25)
注册日期 2007-9-10
论坛徽章:26
金色在线徽章生肖徽章:猪    
      

发表于 2008-6-25 17:13 
报什么错,最好先把动态语句赋值给一变量,把错误贴出来


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问