[英]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.