动态sql语句 到底什么样的信息写在 引号里面 ,什么样的信息写在引号外面 。调了一句动态sql 调了一个早上了。郁闷 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你先不要执行动态语句,将拼好的语句输出dbms_output.put_line(sqlstr);看看输出的结果,应该就明白了 所有的SQL语句都要写在''里面啊,你引用的数据库对象用+连接就好了,记得;不要写在''里 V_SQL := ' INSERT INTO CRMS_CO_PERSONALITY_INDEXDATA( INDEXDATA_ID, BIG_RULE_CD , --大规则号 SMALL_RULE_CD , --小规则号 INDEX_CODE , --指标代码 INDEX_NAME , --指标名称 INDEX_VALUE , --指标值 RULE_TYPE_CD , --规则类别 BUSS_TYPE_CD , --类型(对公,对私) DATA_INDEX , ---粒度主键 ALARM_DATE , FIELD_ATTRIBUTE_TYPE, is_illegal ) SELECT SEQ_CO_PERSONALITY_INDEX.NEXTVAL,''' || REC1.BIG_RULE_CD || ''',''' || REC1.SMALL_RULE_CD || ''',''' || REC1.INDEX_CODE || ''',''' || REC1.INDEX_NAME || ''', TO_CHAR(tn.' || REC1.INDEX_CODE || '),''' || REC1.RULE_TYPE_CD || ''',''' || REC1.BUSS_TYPE_CD || ''',tn.' || REC1.DATA_INDEX || ', TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD''),''10000-||CMB.currency_cd '',''999'' FROM ' || REC1.TABLE_NAME || ' tn ,CRMS_MID_BUSINESS CMB WHERE CMB.BIZ_NO= tn.' || REC1.DATA_INDEX ||' AND CMB.BEGIN_DATE <= TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD'') AND CMB.BEGIN_DATE > TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD'') AND SMALL_RULE=''' || REC0.SMALL_RULE_CD || ''' AND REPORT_DATE=TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD'')'; 我想取 CMB.currency_cd 的信息 ,但是要放在哪里呢? 不是很明白你的意思将你的语句在dbms_output输出,由于无法得到参数值,将参数都加上引号,得到的结果是INSERT INTO CRMS_CO_PERSONALITY_INDEXDATA( INDEXDATA_ID, BIG_RULE_CD , --大规则号 SMALL_RULE_CD , --小规则号 INDEX_CODE , --指标代码 INDEX_NAME , --指标名称 INDEX_VALUE , --指标值 RULE_TYPE_CD , --规则类别 BUSS_TYPE_CD , --类型(对公,对私) DATA_INDEX , ---粒度主键 ALARM_DATE , FIELD_ATTRIBUTE_TYPE, is_illegal ) SELECT SEQ_CO_PERSONALITY_INDEX.NEXTVAL,'REC1.BIG_RULE_CD','REC1.SMALL_RULE_CD','REC1.INDEX_CODE ',' REC1.INDEX_NAME', TO_CHAR(tn.REC1.INDEX_CODE),'REC1.RULE_TYPE_CD','REC1.BUSS_TYPE_CD',tn. REC1.DATA_INDEX, TO_DATE('20090630','YYYY-MM-DD'),'10000-||CMB.currency_cd ','999' FROM REC1.TABLE_NAME tn ,CRMS_MID_BUSINESS CMB WHERE CMB.BIZ_NO= tn.REC1.DATA_INDEX AND CMB.BEGIN_DATE <= TO_DATE('20090630','YYYY-MM-DD') AND CMB.BEGIN_DATE > TO_DATE('20090630','YYYY-MM-DD') AND SMALL_RULE=' REC0.SMALL_RULE_CD ' AND REPORT_DATE=TO_DATE('20090630','YYYY-MM-DD') dbms_output.put_line不能输出长字符串,一般稍微长一点的SQL就输不出来了 求助!!刚写完的一个分页 编译器通过 程序调用的时候 报标识符无效 代码如下: or 与 in 的性能问题 如何用SELECT语句实现下面的逻辑? 请教在linux下安装oracle10g遇到的问题 请教查询语句优化。 如何用proc在oracle数据库上实现多行查询 如何使索引失效 求助:把当前时间写入表的date类型列中 快帮帮我!!oracle的导入问题 oracle 中 varchar2存储带小数的数字,出现数据丢失的问题 OracleCSService 超长时间启动,寻求解决方法。 oracle sql与标准的sql语句的区别?
dbms_output.put_line(sqlstr);
看看输出的结果,应该就明白了
INDEXDATA_ID,
BIG_RULE_CD , --大规则号
SMALL_RULE_CD , --小规则号
INDEX_CODE , --指标代码
INDEX_NAME , --指标名称
INDEX_VALUE , --指标值
RULE_TYPE_CD , --规则类别
BUSS_TYPE_CD , --类型(对公,对私)
DATA_INDEX , ---粒度主键
ALARM_DATE ,
FIELD_ATTRIBUTE_TYPE,
is_illegal )
SELECT SEQ_CO_PERSONALITY_INDEX.NEXTVAL,''' ||
REC1.BIG_RULE_CD || ''',''' || REC1.SMALL_RULE_CD ||
''',''' || REC1.INDEX_CODE || ''',''' || REC1.INDEX_NAME ||
''', TO_CHAR(tn.' || REC1.INDEX_CODE || '),''' ||
REC1.RULE_TYPE_CD || ''',''' || REC1.BUSS_TYPE_CD ||
''',tn.' || REC1.DATA_INDEX || ', TO_DATE(''' || '20090630' ||
''',''YYYY-MM-DD''),''10000-||CMB.currency_cd '',''999''
FROM ' || REC1.TABLE_NAME || ' tn ,CRMS_MID_BUSINESS CMB WHERE CMB.BIZ_NO= tn.' || REC1.DATA_INDEX
||' AND CMB.BEGIN_DATE <= TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD'')
AND CMB.BEGIN_DATE > TO_DATE(''' || '20090630' || ''',''YYYY-MM-DD'')
AND SMALL_RULE=''' ||
REC0.SMALL_RULE_CD || ''' AND REPORT_DATE=TO_DATE(''' ||
'20090630' || ''',''YYYY-MM-DD'')';
将你的语句在dbms_output输出,由于无法得到参数值,将参数都加上引号,得到的结果是
INSERT INTO CRMS_CO_PERSONALITY_INDEXDATA(
INDEXDATA_ID,
BIG_RULE_CD , --大规则号
SMALL_RULE_CD , --小规则号
INDEX_CODE , --指标代码
INDEX_NAME , --指标名称
INDEX_VALUE , --指标值
RULE_TYPE_CD , --规则类别
BUSS_TYPE_CD , --类型(对公,对私)
DATA_INDEX , ---粒度主键
ALARM_DATE ,
FIELD_ATTRIBUTE_TYPE,
is_illegal )
SELECT SEQ_CO_PERSONALITY_INDEX.NEXTVAL,'REC1.BIG_RULE_CD','REC1.SMALL_RULE_CD','REC1.INDEX_CODE ',' REC1.INDEX_NAME', TO_CHAR(tn.REC1.INDEX_CODE),'REC1.RULE_TYPE_CD','REC1.BUSS_TYPE_CD',tn. REC1.DATA_INDEX, TO_DATE('20090630','YYYY-MM-DD'),'10000-||CMB.currency_cd ','999'
FROM REC1.TABLE_NAME tn ,CRMS_MID_BUSINESS CMB WHERE CMB.BIZ_NO= tn.REC1.DATA_INDEX AND CMB.BEGIN_DATE <= TO_DATE('20090630','YYYY-MM-DD')
AND CMB.BEGIN_DATE > TO_DATE('20090630','YYYY-MM-DD')
AND SMALL_RULE=' REC0.SMALL_RULE_CD ' AND REPORT_DATE=TO_DATE('20090630','YYYY-MM-DD')
dbms_output.put_line
不能输出长字符串,一般稍微长一点的SQL就输不出来了