【发布时间】:2016-12-07 01:39:00
【问题描述】:
我正在使用 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;
【问题讨论】:
-
此链接包含如何定义游标、获取游标并显示结果的示例。我们可以为您解决问题,但由于它是基本的,建议您自行解决。 tutorialspoint.com/plsql/plsql_cursors.htm
-
您不能像在 Sql Server 中那样在 oracle 程序中逐句显示内容。这实际上是关于创造输出。在 Oracle 中,它是严格的。你需要从存储过程中返回游标,然后用它做一些事情来显示数据
标签: oracle stored-procedures oracle-sqldeveloper