首页 > 解决方案 > 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

标签: sqloracle

解决方案


您的要求非常简单,但您的预期输出有点不清楚。

大多数情况下,这种类型的要求是通过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>

推荐阅读