Stored procedures 如何在Oracle SQL Developer中执行存储过程

Stored procedures 如何在Oracle SQL Developer中执行存储过程,stored-procedures,oracle-sqldeveloper,Stored Procedures,Oracle Sqldeveloper,这个过程似乎不太可能达到你想要的效果。除非您保证rating表中始终只有一行,否则在运行时您将得到一个错误,即您的查询要么不返回任何行,要么返回多行 如果保证在评级中始终只有一行,则可以在匿名PL/SQL块中调用此过程 CREATE OR REPLACE PROCEDURE TEST_RATING ( P_RID OUT NUMBER , P_STARS OUT NUMBER , P_DATE OUT DATE ) AS BEGIN SELECT RID, STARS, RATIN

这个过程似乎不太可能达到你想要的效果。除非您保证
rating
表中始终只有一行,否则在运行时您将得到一个错误,即您的查询要么不返回任何行,要么返回多行

如果保证在
评级中始终只有一行,则可以在匿名PL/SQL块中调用此过程

CREATE OR REPLACE PROCEDURE TEST_RATING 
(
  P_RID OUT NUMBER 
, P_STARS OUT NUMBER 
, P_DATE OUT DATE 
) AS 
BEGIN
SELECT RID, STARS, RATINGDATE 
INTO P_RID, P_STARS, P_DATE
FROM RATING;
END TEST_RATING;

当然,即使只是调用
dbms\u输出,您也可能希望对返回的数据执行一些操作。将\u行
写入
dbms\u输出
缓冲区。

您好,Justin,我想将多行作为输出。我该怎么做?@user1483598-这取决于您的需求以及您计划如何处理数据。您可以编写一个具有类型为
SYS\u REFCURSOR
的OUT参数的过程。不过,创建一个视图可能更有意义。或者至少是一个函数,而不是一个具有
OUT
参数的过程。
DECLARE
  l_rid   number;
  l_stars number;
  l_date  date;
BEGIN
  test_rating( l_rid,
               l_stars,
               l_date );
END;