到底什么样的信息写在 引号里面 ,什么样的信息写在引号外面 。调了一句动态sql 调了一个早上了。郁闷

解决方案 »

  1.   

    你先不要执行动态语句,将拼好的语句输出
    dbms_output.put_line(sqlstr);
    看看输出的结果,应该就明白了
      

  2.   

    所有的SQL语句都要写在''里面啊,你引用的数据库对象用+连接就好了,记得;不要写在''里
      

  3.   

     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'')';
      

  4.   

    我想取 CMB.currency_cd 的信息 ,但是要放在哪里呢?
      

  5.   

    不是很明白你的意思
    将你的语句在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')
      

  6.   


    dbms_output.put_line
    不能输出长字符串,一般稍微长一点的SQL就输不出来了