在 Oracle 过程中显示 table
Display a table inside an Oracle procedure
我在 Oracle DB 12c 上并使用 SQL Developer。
如果所有参数都是 "null".
,我如何在过程中显示 table 的每一行
我猜我的 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;
SYS_REFCURSOR
用于保存表格数据,通常在您希望从函数中 return 此类数据时使用。
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;
我在 Oracle DB 12c 上并使用 SQL Developer。
如果所有参数都是 "null".
,我如何在过程中显示 table 的每一行我猜我的 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;
SYS_REFCURSOR
用于保存表格数据,通常在您希望从函数中 return 此类数据时使用。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;