假设我已经写好了5个存储过程
P01
P02
P03
P04
P05
但是我每次运行都要运行5次Execute P01;
......
Execute P05;问题一:请问各位老大,Oracle有没有类似 Sequence一样的东西可以按指定的顺序,调用我的过程。问题二:另外请问各位老大,我看书上说存储过程会被编译以后可以提高效率,这个编译是需要我操作的么,还是不需要用户关心?
P01
P02
P03
P04
P05
但是我每次运行都要运行5次Execute P01;
......
Execute P05;问题一:请问各位老大,Oracle有没有类似 Sequence一样的东西可以按指定的顺序,调用我的过程。问题二:另外请问各位老大,我看书上说存储过程会被编译以后可以提高效率,这个编译是需要我操作的么,还是不需要用户关心?
你可以做个总的p把调用封装起来。通过execute immediate 'execute p0' + 1 这样的形式也可以动态执行。
问题二 就不清楚了
BEGIN
p01;
p02;
p03;
p04;
p05;
END;
/以后只要执行这个存储过程就可以了.二,写好存储过程把CREATE PROCEDURE放到SQLPLUS执行一次就是编译了,如上面的p_all,把上面的语句在sqlplus执行即可。如果将存储过程中用到的做了修改,如增加或减少了字段,或修改了字段的类型,那么存储过程会变为无效的(即INVALID,可通过USER_OBJECTS.STATUS看到),这时就要编译存储过程了,可以用语句
ALTER PROCEDURE 存储过程名 COMPILE;
来编译,如果不编译调用此存储过程时Oracle会自动编译,多了一个编译过程当然效率要低了,所以最好先编译。