我在Oracle DB 12c上使用SQL Developer。
如果所有参数都是“null”,我如何显示过程中表的每一行。
我猜我的IF是正确的,我可能已经看过他们使用游标的两三个帖子,但我对这些游戏的使用并不是很熟悉。
我希望它基本上是一个 SELECT * FROM Salle ,但有一个条件。
我在这里走在正确的轨道上吗?
CREATE OR REPLACE PROCEDURE Foo1 (noSalle in varchar2, Cat in varchar2, Nb in number)
IS
cursor SYS_REFCURSOR; -- Not sure at all about that
BEGIN
DBMS_OUTPUT.PUT_LINE('Salle : ' || noSalle || 'Cat : ' || Cat);
IF (noSalle = null AND Cat = null AND Nb = null) THEN
OPEN cursor FOR
SELECT * from Salle;
-- Some sort of FOR row IN cursor LOOP ?
-- Display ALL rows of "Salle"
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Erreur Oracle : '||sqlcode||' ; Message Oracle : '||sqlerrm);
END;
答案 0 :(得分:0)
SYS_REFCURSOR
用于保存当您想要从函数返回此类数据时通常使用的表格数据。
Null
比较不正确。请改用colname is null
。
如果您只想使用dbms_output.put_line
或类似内容打印所有行,则可以执行此操作
for row in (select * from salle) loop
dbms_output.put_line(row.col1||' '||row.col2);
end loop;