在Oracle过程中显示一个表

时间:2016-12-07 01:39:01

标签: oracle stored-procedures oracle-sqldeveloper

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

1 个答案:

答案 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;