我是PL / SQL的新手,所以我正在制作一个程序,在一个参数中用OUT返回数据库版本。我的SQL代码是:
CREATE OR REPLACE PROCEDURE getVersion(outParam1 OUT VARCHAR2)
IS
BEGIN
outParam1 := SELECT * FROM V$VERSION;
END;
有人可以向我解释如何正确编写程序以及如何执行程序。
答案 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;