Plsql 使用记录类型的过程
我想创建一个过程,返回前五条记录的列表。我必须使用记录类型和表类型。我做错了什么Plsql 使用记录类型的过程,plsql,record,procedure,Plsql,Record,Procedure,我想创建一个过程,返回前五条记录的列表。我必须使用记录类型和表类型。我做错了什么 CREATE OR REPLACE PROCEDURE procedure_example(v_table OUT v_rec) IS CURSOR cur1 IS SELECT * FROM ( SELECT type_note, note FROM dd_note ORDER BY type_note) WHERE rownum <
CREATE OR REPLACE PROCEDURE procedure_example(v_table OUT v_rec) IS
CURSOR cur1 IS
SELECT * FROM (
SELECT
type_note,
note
FROM dd_note ORDER BY type_note)
WHERE rownum < 5;
TYPE v_rec IS RECORD ( v_type_note NUMBER(2)
, v_note VARCHAR(30));
TYPE v_table IS TABLE OF v_rec INDEX BY BINARY_INTEGER;
BEGIN
OPEN cur1;
LOOP
FETCH cur1 INTO v_type_note, v_note;
dbms_output.put_line(v_type_note || '. --- ' || v_note);
EXIT WHEN cur1%NOTFOUND;
--enter code here
END LOOP;
CLOSE cur1;
END procedure_example;
您声明类型的位置是错误的。必须在该过程所属的包中(而不是在此过程中)声明类型v_rec和类型v_表。下面是代码的改进版本。首先,在包中声明以下类型:
TYPE v_rec IS RECORD(
v_type_note number(2),
v_note varchar(30));
TYPE v_table is table of v_rec index by pls_integer;
这是您的函数:
create or replace PROCEDURE procedure_example (out_table OUT v_table) IS
BEGIN
select type_note, note BULK COLLECT into out_table from (select type_note, note from dd_note order by type_note) where rownum < 5
FOR i in 1..out_table.COUNT LOOP
dbms_output.put_line(out_table(i).v_type_note || '. --- ' || out_table(i).v_note);
end loop;
END procedure_example;
欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。请显示代码在当前状态下的功能。