日期:2014-05-17  浏览次数:20738 次

请问以下SQL在方法内如何执行。谢谢
create   or   replace   function   f_name(strSql   in   varchar2)   return   number   is

v_sqlstr   Varchar2(2000);
Result   Number(10,5);
price_sum   Number(10,5);

Begin

v_sqlstr:= 'Select   Sum(item.bid_price_stand)   bid_price_stand   From   Zb_Bid_Item   Item,   Inf_Product   p,   Inf_Drug   d   ';
v_sqlstr:=v_sqlstr|| '   Where   item.Product_Id   =   p.Product_Id   And   item.Factory_Id   =   p.Factory_Id   And   p.Drug_Id   =   d.Drug_Id   ';
v_sqlstr:=v_sqlstr||strSql;
    Execute   Immediate   v_sqlstr   Into   price_sum;    
If   price_sum=0   Then
    price_sum:=   bid_price_stand;
End   If;

Result:=price_sum;
    return(Result);

end   f_name;

以上编译及测试在pl/sql都可以通过。但在页面执行时也不行。
页面执行的SQL:
Update   Zb_Bid_Item
  Set   Bid_Price                 =   10,Remark   =   Jz_Limit_Get_Price_Mark(10, 'And   item.Invite_Id=24   And   Drug_Name= ' '注射用头孢曲松钠 ' '   And   Drug_Spec   =   ' '1.0g ' '   And   Mode_Name   =   ' '粉针剂 ' '   And   Baddish_No   =   2 ')
where   id=3

  报错现象:
  表   xxx   发生了变化,触发器/函数不能读

------解决方案--------------------
表Zb_Bid_Item上存在update触发器?你执行的update并没有直接使用那个函数。
------解决方案--------------------
肯定有哪个触发器关联到了