我刚开始使用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;
答案 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;