'teacher''day,liming''birthday'
用两个单引号表示一个单引号.
 replace(feilds,'''')可以去掉单引号

解决方案 »

  1.   

    在请问:我在存储过程中可以执行ALTER命令吗?如果可以该如何执行?谢谢!
      

  2.   

    用 execute immediate 'alter '
      

  3.   

    可是如下过程创建没问题,调用时报错,请予以指教不胜感激:
    --目的:重编译所有对象
    create or replace procedure p_compile
    is
    v_str varchar2(200):='ALTER '||'''object_type'''||' '||'''object_name'''||' recompile;';
    v_success varchar2(60):='compiled no successful!';
     cursor mycursor is
               select v_str from user_objects where object_type
               in ('VIEW','TRIGGER','PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY');
    --v_lstr varchar2;
    --type tarr is varray(100) of number;
    --tarry tarr :=tarr();
    begin
    for c_re in mycursor loop
      execute immediate ltrim(rtrim(replace(c_re.v_str,'''')));
       commit;
    end loop;
    v_success :='compiled successfully!';
    dbms_output.put_line(v_success);
    end p_compile;
    SQL> conn zzy/030136@oemrep
    已连接。
    SQL> execute p_compile
    BEGIN p_compile; END;*
    ERROR 位于第 1 行:
    ORA-00940: 无效的 ALTER 命令
    ORA-06512: 在"ZZY.P_COMPILE", line 13
    ORA-06512: 在line 1
    SQL>