【发布时间】:2021-03-19 04:01:41
【问题描述】:
我正在从 SQL DEVELPER 执行以下过程,我可以选择插入 z_id 和 i_type 的输入值,但是 i_data 是灰色的。
不能从 SQL 执行带有输入参数的过程作为集合 开发工具?
我在这里缺少什么?代码已编译但无法通过 SQL Developer 执行
以下是我所做的,但这会在 Oracle 19c 上产生编译错误
create or replace type my_type AS OBJECT (
p_id number,
p_text varchar2 (100),
p_details clob);
/
create or replace type tab1 is table of my_type;
/
create or replace procedure vehicle_det (z_id in varchar2, i_type in varchar2, i_data in tab1)
IS
BEGIN
for i in 1..i_data.count
LOOP
if (i_type ='BMW')
THEN
UPDATE STOCK_DATA
set stock_id=i_data(i).p_id, stock_des=i_data(i).p_text, clearance=i_data(i).p_details where s_id=z_id ;
end if;
end loop;
end vehicle_det;
以下是错误,请提供您的智慧:::: **错误 --ORA-06531 引用未初始化的集合**
【问题讨论】:
-
参数
i_data的类型为my_type,它是一个标量。你不能迭代一个标量。我的猜测是您打算将i_data设为tab1类型,这是一个集合。你可以遍历一个集合。 -
@JustinCave 感谢您的智慧,更新了有问题的代码,但无法执行 ERROR --ORA-06531 Reference to uninitialized collection
-
如果您在调用代码时遇到错误,请编辑您的问题以包括您如何调用该过程。我的猜测是您在调用过程之前没有正确初始化集合。
-
@JustinCave 我正在尝试从 SQL Developer 工具执行过程已更新问题
-
@JustinCave,你不觉得 OP 在过程定义中缺少 BEGIN 关键字吗?
标签: oracle plsql collections