oracle 查询语句中调用存储过程
时间: 2023-08-31 09:06:02 浏览: 240
在 Oracle 中,可以在 SQL 查询语句中调用存储过程。一般情况下,存储过程中需要将结果集以 OUT 参数的形式返回,然后在查询语句中使用该参数,从而获得存储过程的执行结果。
下面是一个示例存储过程,查询指定部门中的员工数:
```
CREATE OR REPLACE PROCEDURE get_emp_count (p_deptno IN NUMBER, p_count OUT NUMBER)
IS
BEGIN
SELECT COUNT(*) INTO p_count FROM emp WHERE deptno = p_deptno;
END;
```
在这个存储过程中,p_deptno 是输入参数,表示要查询的部门编号;p_count 是输出参数,表示查询结果,即该部门中的员工数。
要在 SQL 查询语句中调用该存储过程,可以使用 EXECUTE 或者 CALL 语句。例如,要查询部门编号为 10 的部门中的员工数,可以使用以下语句:
```
DECLARE
v_count NUMBER;
BEGIN
get_emp_count(10, v_count);
DBMS_OUTPUT.PUT_LINE('Department 10 has ' || v_count || ' employees.');
END;
```
在这个示例中,使用 EXECUTE 语句调用存储过程 get_emp_count,并将结果存储在 v_count 变量中。然后,使用 DBMS_OUTPUT.PUT_LINE 函数输出结果到控制台。
需要注意的是,在 SQL 查询语句中调用存储过程时,存储过程需要被定义为 AUTONOMOUS TRANSACTION,以避免事务管理的冲突。在存储过程定义中添加语句 PRAGMA AUTONOMOUS_TRANSACTION 即可。
阅读全文