如何使PL / SQL存储过程显示表?

问题描述 投票:0回答:1

假设我有一个名为Student的表,该表具有3个属性,即学生编号,姓名和喜欢的颜色,当我调用此过程时,如下所示:

execute favColor('RED');

输出应为:

NAME     FAV_COLOR 
-------- -----------
MARY     RED
JANE     RED
PETER    RED
JOHN     RED

我可以使用示例代码来执行此操作吗?到目前为止,我只看到过程插入或更新记录,并且如果过程中有一个select语句,则必须有一个in子句,这是否意味着过程不可能显示此输出?

oracle stored-procedures plsql sqlplus
1个回答
0
投票

由于我没有您的桌子,我将乔布斯(Scott's)与工作一起使用,而不是颜色。

样本数据:

SQL> select ename, job from emp order by job, ename;

ENAME      JOB
---------- ---------
FORD       ANALYST
SCOTT      ANALYST
ADAMS      CLERK
JAMES      CLERK
MILLER     CLERK
SMITH      CLERK
BLAKE      MANAGER
CLARK      MANAGER
JONES      MANAGER
KING       PRESIDENT
ALLEN      SALESMAN
MARTIN     SALESMAN
TURNER     SALESMAN
WARD       SALESMAN

14 rows selected.

程序将退回有特定工作的雇员:

SQL> create or replace procedure favJob (par_job in varchar2, par_rc out sys_refcursor)
  2  is
  3  begin
  4    open par_rc for
  5      select ename, job
  6      from emp
  7      where job = par_job
  8      order by ename;
  9  end;
 10  /

Procedure created.

测试:

SQL> var rc refcursor
SQL> exec favJob('MANAGER', :rc);

PL/SQL procedure successfully completed.

SQL> print rc

ENAME      JOB
---------- ---------
BLAKE      MANAGER
CLARK      MANAGER
JONES      MANAGER

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.