简体   繁体   English

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

[英]Create Oracle PL/SQL procedure that outputs distinct names inside a loop

I just started with PL/SQL, so, please be kind. 我刚开始使用PL / SQL,所以请客气。 I have a simple problem, I want to extract distinct names from a table. 我有一个简单的问题,我想从表中提取不同的名称。 When I do that, inside the loop, I am going to do on each of those distinct names some other operations. 当我这样做时,在循环内部,我将对其他各个名称进行一些其他操作。

I am stuck on how to get the unique names inside a loop. 我对如何在循环中获取唯一名称感到困惑。 What I do is not working because if I have: 我做不到的工作是因为如果我有:

1 MARY
2 MARY
3 JOHN

I am outputting: 我正在输出:

MARY
MARY

Instead of: 代替:

MARY
JOHN

This is my code: 这是我的代码:

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;

I'd use an implicit cursor loop instead, they're very easy to work with. 我会改用隐式游标循环,它们很容易使用。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM