创建在一个OUT参数数据库版本(Oracle)中返回的存储过程

时间:2014-06-29 11:53:50

标签: sql plsql oracle11g

我是PL / SQL的新手,所以我正在制作一个程序,在一个参数中用OUT返回数据库版本。我的SQL代码是:

CREATE OR REPLACE PROCEDURE getVersion(outParam1 OUT VARCHAR2)
IS
BEGIN
  outParam1 := SELECT * FROM V$VERSION;
END;

有人可以向我解释如何正确编写程序以及如何执行程序。

1 个答案:

答案 0 :(得分:1)

尝试

CREATE OR REPLACE PROCEDURE getVersion (out_cursor OUT SYS_REFCURSOR)
AS
BEGIN
   OPEN out_cursor FOR SELECT * FROM V$VERSION;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END getVersion;

要从SQL Plus执行,请执行

VARIABLE mycursor REFCURSOR;

BEGIN
   getVersion (:mycursor);
END;
/

PRINT mycursor

SQL Developer

var mycursor refcursor
exec getVersion(:mycursor)
print mycursor

如果您希望OUT varchar2包含单行,那么您可以使用

CREATE OR REPLACE PROCEDURE myProc (outParam1 OUT VARCHAR2)
AS
BEGIN
   SELECT dummy INTO outParam1 FROM DUAL;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END myProc;

并执行

VARIABLE testvar VARCHAR2(16);

EXEC myProc(:testvar);

PRINT testvar;