当我尝试调试现有应用程序时,我发现了一个执行显示错误的存储过程的方法。我想在我的Oracle SQLDeveloper上执行存储过程,给定过程:
type numTableType is table of NUMBER index by binary_integer;
PROCEDURE up_correction_status(p_exp_check_id IN numTableType, p_status_id NUMBER, p_user_id NUMBER, p_return OUT NUMBER);
但是,如何声明numTableType
的价值?
我试图:
var p_return NUMBER;
execute "PKG_PDM_DASHBOARD".up_approved_corr_status(1, 2, 11, :p_return);
print p_return;
发现此错误:
在命令的第2行开始出错: 执行“PKG_PDM_DASHBOARD”.up_approved_corr_status(1,2,11,:p_return) 错误报告: ORA-06550:第1行第8列: PLS-00306:调用'UP_APPROVED_CORR_STATUS'时参数的数量或类型错误 ORA-06550:第1行第8列: PL / SQL:忽略语句
只想执行它并获得返回值
答案 0 :(得分:2)
您可以在包中使用type
。在包裹之外,您必须create type
。
要执行具有此类复杂类型参数的过程,请使用pl / sql匿名块 执行模板:
declare
X tableType;
begin
X(1) := 1;
P(X);
end;