我想将一个sql语句作为参数传入一个存储过程A,
该存储过程动态执行该sql语句。
当sql语句为创建一个存储过程的代码时,如果sql中含有回车换行符,
则存储过程编译不通过,如果sql中用空格取代回车换行符,编译能够通过。
可是,我也不能把一个很长的存储过程写在一行上啊!
请问高手,有什么好的解决办法没有。

解决方案 »

  1.   

    13:18:22 SQL> select 'a'||chr(10)||'a' from dual;'A'
    ---
    a
    a
      

  2.   

    13:18:22 SQL> select 'a'||chr(10)||'a' from dual;'A'
    ---
    a
    a
      

  3.   

    把换行符转换为空格符,
    如:
    str:='create procedre name(...)
          as
          .....';
    进行转换:
    replace(str,<cr>,' ');  --换行符转换符要查一查
      

  4.   

    把回车换行符(~r~n)换成换行符(~n)即可。
      

  5.   

    各位朋友,小弟近日正在学习oracle9i,由于授课教师水平很戳,所以学习没有多大进展,本人想请各位朋友帮我找一些oracle的电子文档或幻灯片,以助我学习提高,小弟感激不尽.来信请发:
    [email protected]
      

  6.   

    呵呵,需要去考虑那些什么的回车符吗,
    将SQL语句分段用||拼串起来附给一个字符变量不就可以了吗。aaa varchar(3000);aaa:=' select name ' || 'from emp';