存储过程中执行字符串中的sql语句
我希望在存储过程中自动生成sql语句,并且生成的sql语句执行后,可以在存储过程中回退此语句的执行结果。
sql server中有个EXEC,不知道它的执行结果能不能在存储过程中回退,知道的朋友麻烦说一声,这里先偷个懒了。
问题点数:60、回复次数:6Top
1 楼lynx(lynx)回复于 2005-03-04 09:46:57 得分 12
就是动态SQL,参考:http://soft.yesky.com/SoftChannel/72342371928965120/20041022/1867273.shtml
其中,execute immediate 'select name,salary from emp where id=:1' 就是执行动态SQL的语句。
Top
2 楼bzszp(SongZip)回复于 2005-03-04 10:09:38 得分 12
SQL> set serveroutput on
SQL> declare
2 v_out number;
3 begin
4 execute immediate 'select 1 from dual ' into v_out;
5 dbms_output.put_line(v_out);
6 end;
7 /
1
PL/SQL 过程已成功完成。
SQL>Top
3 楼zhaokeke2004(男人·海洋)回复于 2005-03-04 10:13:25 得分 12
用execute immediate,你的数据库版本必须>=oracle 8i
DDL语句应该不能回退巴.Top
4 楼zhaokeke2004(男人·海洋)回复于 2005-03-04 10:14:27 得分 12
不好意思,上面写的是如果execute immediate后面写的是DDL语句的话Top
5 楼bzszp(SongZip)回复于 2005-03-04 10:28:25 得分 12
805以下的不可以,需要通过dbms_sql来实现。
815以上的就可以Top
6 楼tansoul(我也不懂)回复于 2005-04-15 11:24:39 得分 0
学到一招,谢谢^_^Top




