sql - PL/SQL 程序显示指定为“经理”的员工表中员工的详细信息
问题描述
我有一个叫做员工的关系,如下所示:
EMPNO EMPNAME DESIGNATION DATEOFJOIN SALARY DEPNO
----- ------- ----------- --------- ------ ----
101 Sharon Manager 01-JAN-00 10000 1
102 Gayathri Manager 01-JAN-00 10000 1
111 Raj Salesman 05-JAN-00 5000 1
我想创建一个程序来显示员工表中指定为“经理”的所有员工的详细信息。您能帮我解决这个问题吗?
我希望我的输出是这样的:
EMPNO EMPNAME DATEOFJOIN SALARY DEPNO
----- ------- --------- ------ ----
101 Sharon 01-JAN-00 10000 1
102 Gayathri 01-JAN-00 10000 1
解决方案
您的要求非常简单,但您的预期输出有点不清楚。
大多数情况下,这种类型的要求是通过refcursor
.
我向您展示如下示例:
SQL> CREATE OR REPLACE PROCEDURE SHOW_ACCT_DETAILS (
2 P_OUT_CUR OUT SYS_REFCURSOR
3 ) AS
4 BEGIN
5 OPEN P_OUT_CUR FOR SELECT ACC_NR, SUM_, CUST_ID
6 FROM ACCOUNT
7 WHERE SUM_ > 1000;
8 END SHOW_ACCT_DETAILS;
9 /
Procedure created.
现在,调用该过程并打印所需的结果。
SQL> var cur refcursor;
SQL> exec SHOW_ACCT_DETAILS(:cur);
PL/SQL procedure successfully completed.
SQL> print :cur;
ACC_NR SUM_ CUST_ID
---------- ---------- ----------
500 3400 100
600 5000 101
700 5070 102
SQL>