问题描述
嗨,
我们正在运行下面提到的程序,
需要知道如何在var_V1变量中传递tale类型值,以便我可以成功运行匿名块。
现在我得到ORA-06531: 未初始化集合错误的引用。
请建议。
谢谢。
test_tbl_type的定义:
我们正在运行下面提到的程序,
CREATE OR REPLACE PROCEDURE rec_test (p_party_number IN VARCHAR2,
records IN test_TBL_TYPE,
x_return_status OUT VARCHAR2,
x_return_msg OUT VARCHAR2)
IS
p_distributor_flag VARCHAR2 (1) := 'N';
p_action VARCHAR2 (10);
p_view_only_permit VARCHAR2 (1);
p_demo_permit VARCHAR2 (1);
p_account_num VARCHAR2 (40);
BEGIN
FOR i IN 1 .. records.COUNT
LOOP
p_party_num := records (i).party_num;
p_action := records (i).act;
p_view_only_permit := records (i).view_only;
p_demo_permit := records (i).demo;
xxtest_pkg.test_prc (p_number,
p_party_num,
p_per_party_num,
p_dist_flag,
p_act,
x_return_status,
x_return_msg);
EXIT WHEN x_return_status = 'E';
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
x_return_status := 'E';
x_return_msg := SQLERRM;
END;
/
---anonymous block---------
DECLARE
-- Declarations
var_P_PARTY_NUMBER VARCHAR2 (32767);
var_V1 test_TBL_TYPE ;
var_X_RETURN_STATUS VARCHAR2 (32767);
var_X_RETURN_MSG VARCHAR2 (32767);
BEGIN
-- Initialization
var_P_PARTY_NUMBER := 1234567;
var_V1 := ?
-- Call
xxtest_pkg.test_prc (p_number,
p_party_num,
p_per_party_num,
p_dist_flag,
p_act,
x_return_status,
x_return_msg);
-- Transaction Control
COMMIT;
-- Output values, do not modify
:5 := var_X_RETURN_STATUS;
:6 := var_X_RETURN_MSG;
DBMS_OUTPUT.put_line ('Status: ' || var_X_RETURN_STATUS);
DBMS_OUTPUT.put_line ('Message: ' || var_X_RETURN_MSG);
END;
需要知道如何在var_V1变量中传递tale类型值,以便我可以成功运行匿名块。
现在我得到ORA-06531: 未初始化集合错误的引用。
请建议。
谢谢。
test_tbl_type的定义:
CREATE OR REPLACE TYPE test_tbl_type
IS TABLE OF test_rec_type;
/
CREATE OR REPLACE TYPE test_rec_type as object
(
party_num VARCHAR2 (40),
act VARCHAR2 (10),
view_only VARCHAR2 (1),
demo VARCHAR2 (1)
);
/
专家解答
您将其初始化为test_tbl_type,其中包含许多test_rec_types:
CREATE OR REPLACE TYPE test_rec_type as object
(
party_num VARCHAR2 (40),
act VARCHAR2 (10),
view_only VARCHAR2 (1),
demo VARCHAR2 (1)
);
/
CREATE OR REPLACE TYPE test_tbl_type
IS TABLE OF test_rec_type;
/
declare
v test_tbl_type;
begin
v := test_tbl_type (
test_rec_type('a', 'b', 'c', 'd'),
test_rec_type('a', 'b', 'c', 'd')
);
dbms_output.put_line(v(1).party_num);
end;
/
PL/SQL procedure successfully completed.
a
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




