我想要打印Cursor_pkg.c1.row_emp
的数据,例如:将在Cursor_pkg_func.Print_Cur
程序工作后存在的Cursor_pkg.c1.row_emp.last_name
。我该怎么做?从包装的游标中选择数据,打印它
- 我创建的软件包光标和REC
- 我创建的程序包中取出REC
- 光标数据我想输出获取的数据。怎么样?
有两个问题:我想从包emp_rec
(行)输出的数据,我想Cursor_pkg_func
直接从包装其输出过程 附:其主要思想是存储数据和过程/函数包括获取和选择数据
CREATE OR REPLACE PACKAGE Cursor_pkg AUTHID DEFINER IS
CURSOR C1 IS
SELECT last_name, job_id FROM employees
WHERE job_id LIKE '%CLERK%' AND manager_id > 120
ORDER BY last_name;
row_emp C1%ROWTYPE;
END Cursor_pkg;
/
CREATE OR REPLACE PACKAGE Cursor_pkg_func IS
PROCEDURE Print_Cur;
END Cursor_pkg_func;
/
CREATE OR REPLACE PACKAGE BODY Cursor_pkg_func IS
PROCEDURE Print_Cur IS
BEGIN
OPEN Cursor_pkg.C1;
LOOP
FETCH Cursor_pkg.C1 INTO Cursor_pkg.row_emp;
EXIT when Cursor_pkg.C1%NOTFOUND;
DBMS_OUTPUT.put_line(Cursor_pkg.row_emp.last_name);
END LOOP;
CLOSE Cursor_pkg.C1;
END;
END;
/
BEGIN
Cursor_pkg_func.Print_Cur;
END;
但我想选择并Cursor_pkg.row_emp PACKAGE打印照片,无需创建功能。 以及如何打印不仅姓氏,但所有行? 错误开始于:最后三条语句有什么问题?
CREATE OR REPLACE PACKAGE Cursor_pkg_func IS
TYPE outrec_typ IS RECORD (
var_char2 VARCHAR2(30)
);
TYPE outrecset IS TABLE OF outrec_typ;
FUNCTION f_trans (p in number) RETURN outrecset PIPELINED;
END Cursor_pkg_func;
/
CREATE OR REPLACE PACKAGE BODY Cursor_pkg_func IS
FUNCTION f_trans (p in number) RETURN outrecset PIPELINED IS
out_rec outrec_typ;
BEGIN
OPEN Cursor_pkg.C1;
LOOP
FETCH Cursor_pkg.C1 INTO Cursor_pkg.row_emp;
EXIT when Cursor_pkg.C1%NOTFOUND;
END LOOP;
LOOP
out_rec.var_char2 := Cursor_pkg.row_emp.last_name;
PIPE ROW(out_rec);
DBMS_OUTPUT.put_line(out_rec.var_char2);
END LOOP;
CLOSE Cursor_pkg.C1;
RETURN;
END f_trans;
END Cursor_pkg_func;
/
begin
Cursor_pkg_func.f_trans(5);
end;
/
您是否收到错误?或者你面临的问题是什么? –
您应该调查DBMS_OUTPUT和UTL_FILE包。分享并享受。 –
输出到哪里?你已经有'dbms_output'了,所以你只需要'设置serveroutput',如果你的客户端支持这个'还是要返回客户端可以处理的引用游标(包括仅在SQL * Plus中打印)? –