在SQL中可以调用自定义函数,但是不能够调用存储过程。SQL中调用自定义函数有一定的限制,如果是查询语句,则不可有DML操作,除非使用匿名事务AT。当然,在UPDATE,DELETE中使用的自定义函数可以带DML操作。
如何用SQL调用存储过程呢?因为SQL只能调用自定义函数,但是自定义函数可以调用存储过程,因此,可以SQL----调用FUNCTION---调用PROCEDURE来间接实现SQL调用函数。如下例:
| SQL> CREATE OR REPLACE PROCEDURE test_prc(var1 IN number,var2 OUT NUMBER) 2 AS 3 BEGIN 4 var2 := var1+1; 5 END; 6 / Procedure created SQL> SQL> CREATE OR REPLACE FUNCTION test_func(var1 IN NUMBER) 2 RETURN NUMBER 3 AS 4 var2 NUMBER; 5 BEGIN 6 test_prc(var1,var2); 7 RETURN var2; 8 END; 9 / Function created SQL> SELECT test_func(1) FROM dual; TEST_FUNC(1) ------------ 2 |
在程序编写过程中,如果直接不行,就需要用间接手段,SQL调用存储过程,使用自定义FUNCTION作为媒介,从而很容易实现这个功能。
本文介绍了一种在SQL中通过创建自定义函数间接调用存储过程的方法。具体步骤为:首先创建一个存储过程,然后创建一个自定义函数,该函数内部调用前面创建的存储过程,最后通过SQL语句调用此自定义函数即可间接实现调用存储过程的目的。
1万+

被折叠的 条评论
为什么被折叠?



