这是我写的一个函数
create or replace function fun_hd_translate_Spec_by_bar
(
  p_cSpec_name in varchar2,p_cTableName in varchar2
)
/*将规格名称转换为规格编号*/
return varchar2
as
v_cResult varchar2(10000);
begin
execute immediate  'select  
 stritemcode   
  from  
  '||p_cTableName||'.item   where stritemname='||p_cSpec_name into v_cResult; 
   return v_cResult;
end fun_hd_translate_Spec_by_bar;在存储过程里调用此函数获得函数返回值,并且将函数返回值和传入参数一并插入到另外一个表,发现这样一个问题
在调用此函数fun_hd_translate_Spec_by_bar时 参数p_cSpec_name 必须加"'" 不加引号则无法调用 另外加引号调用之后
在新增插入的另外一个表中将插入"'" 很困惑 不知为什么会将"'"插入到新表
还有使用replace函数能不能在我调用完毕之后替换掉"'" 
请问有没有别的办法让我不用在参数前后增加"'",谢谢大家

解决方案 »

  1.   

    create or replace function fun_hd_translate_Spec_by_bar 

      p_cSpec_name in varchar2,p_cTableName in varchar2 

    /*将规格名称转换为规格编号*/ 
    return varchar2 
    as 
    v_cResult varchar2(10000); 
    begin 
    execute immediate  'select  
    stritemcode  
      from  
      '||p_cTableName||'.item where stritemname='''||p_cSpec_name||'''' into v_cResult; 
      return v_cResult; 
    end fun_hd_translate_Spec_by_bar; 
      

  2.   

    没有出现你说的问题啊.CREATE OR REPLACE FUNCTION XX(P_CSPEC_NAME IN VARCHAR2,
                                  P_CTABLENAME IN VARCHAR2) RETURN VARCHAR2 AS
      V_CRESULT VARCHAR2(200);
    BEGIN
     v_cresult:='select  ename from   ' || P_CTABLENAME ||'   where ename=''' || P_CSPEC_NAME||'''';
      EXECUTE IMMEDIATE v_cresult INTO V_CRESULT;
      RETURN V_CRESULT;
    END;
    /SELECT xx('SMITH','EMP') FROM dual;
    输出:
    SMITH