创建在循环内输出不同名称的Oracle PL / SQL过程

时间:2017-10-09 16:22:42

标签: sql oracle plsql procedure

我刚开始使用PL / SQL,所以,请善待。 我有一个简单的问题,我想从表中提取不同的名称。 当我这样做时,在循环内部,我将对每个不同的名称进行一些其他操作。

我被困在如何在循环中获取唯一名称。我做的不行,因为如果我有:

1 MARY
2 MARY
3 JOHN

我正在输出:

MARY
MARY

而不是:

MARY
JOHN

这是我的代码:

create or replace PROCEDURE CREATE_TABLE 
(
NM  OUT VARCHAR2,
tot OUT NUMBER
)
AS

BEGIN
SELECT count(DISTINCT NAME) INTO tot FROM MYTABLE;


FOR r IN 1..tot
LOOP
SELECT NAME INTO NM
FROM (
      SELECT DISTINCT NAME,
      ROWNUM rnum
      FROM MYTABLE
      ORDER BY NAME DESC
     ) 
WHERE rnum = r;

dbms_output.put_line (NM);
END LOOP;

END;

1 个答案:

答案 0 :(得分:1)

我会使用隐式游标循环,它们很容易使用。

FOR r in (SELECT DISTINCT NAME
  FROM MYTABLE
  ORDER BY NAME DESC)
LOOP
  NM := r.NAME;
  dbms_output.put_line (NM);
END LOOP;