1. 程式人生 > >ORA-00984錯誤:列在此處不允許

ORA-00984錯誤:列在此處不允許

select A.channel_id as  "頻道ID",C.Name as "頻道名稱",B.id as "應用ID",B.Name as "應用名稱" from work_channel_app A ,work_app B,work_channel C where A.App_Id= B.Id and C.id=1   and A.Channel_Id=1

------ORA-00984列在此處不允許解決方法--------------------------------------------------------
execute immediate 'insert into broker_fund values 
(r_hfhd.initdate,r_br.broker_no,r_br.cust_no,r_br.exch_code,r_br.vari_code,r_br.ret_mode,r_br.amt,(r_br.total_fare-r_br.exch_fare)*amt) ' 
該語句寫錯了,你的變數在這全變成了字串了,可以使用 


declare 
.... 
amt1 number; 
begin 
.... 
amt1 := r_br.total_fare*amt; 
execute immediate 'insert into broker_fund(tx_date,broker_no,cust_no,exch_code,vari_code,ret_mode,amt,fare) values 
(:initdate,:broker_no,:cust_no,:exch_code,:vari_code,:ret_mode,:amt,:total_fare) ' 
using r_hfhd.initdate,r_br.broker_no,r_br.cust_no,r_br.exch_code,r_br.vari_code,r_br.ret_mode,r_br.amt,amt1; 
.... 
end ; 

------解決方法--------------------------------------------------------


IF r_br.ret_mode= '2 ' 

把該情況的sql單獨在資料庫裡執行一下看看有沒有什麼錯誤 ...