ORA-00984错误:列在此处不允许

时间:2021-02-05 07:44:46

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单独在数据库里执行一下看看有没有什么错误 ...