同一个语句在sql windows 下能执行,但在commond windows 下执行报错 为什么语句中用了union
 
报错信息是  ORA-00900 无效SQL语句

解决方案 »

  1.   

    insert into thisunitstock
      (L_DATE,
       L_UNIT_ID,
       L_BASECOMBI_ID,
       L_FUND_ID,
       C_INVEST_TYPE,
       VC_BIND_SEAT,
       VC_STOCKHOLDER_ID,
       VC_INTER_CODE,
       C_MARKET_NO,
       L_BEGIN_AMOUNT,
       L_CURRENT_AMOUNT,
       L_FROZEN_AMOUNT,
       L_UNFROZEN_AMOUNT,
       L_BUY_AMOUNT,
       L_SALE_AMOUNT,
       L_PREBUY_AMOUNT,
       L_PRESALE_AMOUNT,
       L_TEMP_FROZEN_AMOUNT,
       L_TEMP_UNFROZEN_AMOUNT,
       L_T1_TEMP_FROZEN_AMOUNT,
       L_T1_FROZEN_AMOUNT,
       EN_CURRENT_IMPAWN_AMOUNT,
       EN_PRE_IMPAWN_AMOUNT,
       EN_IMPAWN_AMOUNT,
       EN_PRE_RETURN_AMOUNT,
       EN_RETURN_AMOUNT,
       EN_BUY_BALANCE,
       EN_SALE_BALANCE,
       EN_BUY_FEE,
       EN_SALE_FEE,                                         
       EN_UNTRANSFERED_INVEST,
       EN_INTEREST_INVEST,
       EN_ACCUMULATE_PROFIT,
       EN_TURN_INVEST,
       EN_TURN_INTEREST_INVEST,
       EN_TURN_PROFIT,
       L_ASSET_ID,
       L_BUY_UNSETTLE_AMOUNT,
       L_SALE_UNSETTLE_AMOUNT,
       EN_BUY_UNSETTLE_BALANCE,
       EN_SALE_UNSETTLE_BALANCE,
       EN_TODAY_PROFIT,
       EN_CURRENT_COST,
       C_POSITION_FLAG)
      (select a.L_DATE,
              a.L_UNIT_ID,
              c.l_combi_id_new,
              c.l_fund_id_new,
              '1',
              case
                when a.c_et_no in ('1', '2') then
                 a.VC_BIND_SEAT
                when a.c_et_no = '5' and
                     d.c_stock_type not in ('2', 'F', 'E') then
                 'SEAT5'
                when a.c_et_no = '5' and d.c_stock_type in ('2', 'E', 'F') then
                 'SEAT6'
              end VC_BIND_SEAT,
              case
                when a.c_et_no in ('1', '2') then
                 a.VC_STOCKHOLDER_ID
                when a.c_et_no = '5' and
                     d.c_stock_type not in ('2', 'E', 'F') then
                 'HOLDER5'
                when a.c_et_no = '5' and d.c_stock_type in ('2', 'E', 'F') then
                 'HOLDER6'
              end VC_STOCKHOLDER_ID,
              case
                when a.c_et_no = '5' and d.c_stock_type in ('2', 'E', 'F') then
                 substr(a.vc_inter_code, 1, 6) || 'CW'
                else
                 a.VC_INTER_CODE
              end,
              case
                when a.c_et_no = '5' and d.c_stock_type in ('2', 'E', 'F') then
                 '6'
                else
                 a.C_MARKET_NO
              end,
              a.L_BEGIN_AMOUNT,
              a.l_current_amount + a.l_buy_amount - a.l_sale_amount +
              nvl(b.l_dividend_right_amount, 0) + nvl(b.l_today_shareout, 0) +
              nvl(b.l_total_shareout, 0) + nvl(b.l_uncirculated_amount, 0),
              a.l_frozen_amount + nvl(b.l_dividend_right_amount, 0) +
              nvl(b.l_today_shareout, 0) + nvl(b.l_total_shareout, 0) +
              nvl(b.l_uncirculated_amount, 0),
              a.L_UNFROZEN_AMOUNT,
              a.L_BUY_AMOUNT,
              a.L_SALE_AMOUNT,
              a.L_PREBUY_AMOUNT,
              a.L_PRESALE_AMOUNT,
              0,
              0,
              0,
              0,
              a.EN_CURRENT_IMPAWN_AMOUNT,
              a.EN_PRE_IMPAWN_AMOUNT,
              a.EN_IMPAWN_AMOUNT,
              a.EN_PRE_RETURN_AMOUNT,
              a.EN_RETURN_AMOUNT,
              a.EN_BUY_BALANCE,
              a.EN_SALE_BALANCE,
              a.EN_BUY_FEE,
              a.EN_SALE_FEE,
              a.en_untransfered_invest,
              a.EN_INTEREST_INVEST,
              a.EN_ACCUMULATE_PROFIT,
              a.EN_TURN_INVEST,
              a.EN_TURN_INTEREST_INVEST,
              a.EN_TURN_PROFIT,
              c.L_ASSET_ID_NEW,
              0,
              0,
              0,
              0,
              0,
              0,
              0
         from tradehis.thisunitstock a,
              tradehis.thisspecstock b,
              tfundname_dnw   c,
              tradehis.thisstockinfo d
        where a.l_date = b.l_date(+)
          and a.l_unit_id = b.l_unit_id(+)
          and a.l_basecombi_id = c.l_combi_id_old
          and substr(a.vc_inter_code, 7, 2) not in ('RZ', 'RQ')
          and a.vc_inter_code = d.vc_inter_code
          and a.l_date = d.l_date
     
       union
       select a.L_DATE,
              a.L_UNIT_ID,
              c.l_combi_id_new,
              c.l_fund_id_new,
              '1',
              case
                when a.c_et_no in ('1', '2') then
                 a.VC_BIND_SEAT
                when a.c_et_no = '5' then
                 'SEAT5'
              end VC_BIND_SEAT,
              case
                when a.c_et_no in ('1', '2') then
                 a.VC_STOCKHOLDER_ID
                when a.c_et_no = '5' then
                 'HOLDER5'
              end VC_STOCKHOLDER_ID,
              a.VC_INTER_CODE,
              a.c_et_no,
              a.L_BEGIN_AMOUNT,
              a.l_current_amount + a.l_buy_amount - a.l_sale_amount +
              nvl(b.l_dividend_right_amount, 0) + nvl(b.l_today_shareout, 0) +
              nvl(b.l_total_shareout, 0) + nvl(b.l_uncirculated_amount, 0),
              a.l_frozen_amount + nvl(b.l_dividend_right_amount, 0) +
              nvl(b.l_today_shareout, 0) + nvl(b.l_total_shareout, 0) +
              nvl(b.l_uncirculated_amount, 0),
              a.L_UNFROZEN_AMOUNT,
              a.L_BUY_AMOUNT,
              a.L_SALE_AMOUNT,
              a.L_PREBUY_AMOUNT,
              a.L_PRESALE_AMOUNT,
              0,
              0,
              0,
              0,
              a.EN_CURRENT_IMPAWN_AMOUNT,
              a.EN_PRE_IMPAWN_AMOUNT,
              a.EN_IMPAWN_AMOUNT,
              a.EN_PRE_RETURN_AMOUNT,
              a.EN_RETURN_AMOUNT,
              a.EN_BUY_BALANCE,
              a.EN_SALE_BALANCE,
              a.EN_BUY_FEE,
              a.EN_SALE_FEE,
              a.en_untransfered_invest,
              a.EN_INTEREST_INVEST,
              a.EN_ACCUMULATE_PROFIT,
              a.EN_TURN_INVEST,
              a.EN_TURN_INTEREST_INVEST,
              a.EN_TURN_PROFIT,
              C.L_ASSET_ID_NEW,
              0,
              0,
              0,
              0,
              0,
              0,
              0
         from tradehis.thisunitstock a, tradehis.thisspecstock b, tfundname_dnw c
        where a.l_date = b.l_date(+)
          and a.l_unit_id = b.l_unit_id(+)
          and a.l_basecombi_id = c.l_combi_id_old
          and substr(a.vc_inter_code, 7, 2) in ('RZ', 'RQ'))
      

  2.   


    楼主是粘贴复制的吗? 这个过程有没有错误? 把SQL 保存为sql脚本,执行脚本看看------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  3.   

    你放在command window 的editor下,然后执行会报错吗
      

  4.   

    union前面有一个空行,把空行删了
      

  5.   

    如果 developer 的 command windows 是某种版本的 sqlplus 的话,应该是语句超长了。
      

  6.   


    union前面有一个空行,把空行删了