create or replace function fun_hd_translate_Area_byID
(
  p_cArea in varchar2,p_cTableName in varchar2
)
return number
as
v_iResult number:=0;
v_cSql varchar2(1000);
beginv_cSql:='select 
lngAreaID  
  from  
  '||p_cTableName||'.area  where strFullName='||
  p_cArea;
execute immediate v_cSql into v_iResult;
   return v_iResult;
end fun_hd_translate_Area_byID;执行时如果参数不加上引号,会报错,加上引号则没有问题,在条件语句后面加
 where strFullName='''||
  p_cArea||''';则无法编译,请问有没有更好的方法可以处理,

解决方案 »

  1.   

    create or replace function fun_hd_translate_Area_byID
    (
      p_cArea in varchar2,p_cTableName in varchar2
    )
    return number
    as
    v_iResult number:=0;
    v_cSql varchar2(1000);
    beginv_cSql:='select 
    lngAreaID  
      from  
      '||p_cTableName||'.area  where strFullName='''||
      p_cArea||'''';
    execute immediate v_cSql into v_iResult;
       return v_iResult;
    end fun_hd_translate_Area_byID;在结尾的单独引号,要变成四个
      

  2.   

    where strFullName='''||
      p_cArea||'''';
      

  3.   

    不用加引号吧,p_cTableName本来就是varchar2类型