在 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;