You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL Developer:如何初始化存储过程的表类型参数?

Oracle SQL Developer调试时初始化关联数组类型参数的方法

你需要初始化的inventory_array是关联数组(Index-by Table),这类集合和游标返回的结果集类型不兼容,所以直接用游标赋值会报类型不匹配错误。以下是在Oracle SQL Developer调试器中正确初始化该参数的步骤:

调试器内直接初始化步骤

  • 启动存储过程调试,进入参数配置界面(你提到的黄色高亮区域)
  • 找到P_INVENTORY_BIN_NUMBERS参数,点击参数值输入框右侧的数组编辑按钮(...)
  • 在弹出的数组编辑器中:
    • 关联数组的索引为BINARY_INTEGER类型,可输入1、2、3这类整数作为索引值
    • 为每个索引对应填写NUMBER(18)类型的数值(比如索引1填1001,索引2填1002)
  • 添加完成后点击确定,即可完成参数初始化

批量初始化的替代方法

如果需要批量赋值,可在调试器的「表达式」窗口中执行以下PL/SQL代码:

DECLARE
    l_inventory_arr PG_MV_INVENTORY_IUD.inventory_array;
BEGIN
    l_inventory_arr(1) := 1001;
    l_inventory_arr(2) := 1002;
    l_inventory_arr(3) := 1003;
    -- 将初始化后的变量赋值给调试参数
    :P_INVENTORY_BIN_NUMBERS := l_inventory_arr;
END;

执行后,目标参数会被自动赋值。


你提供的包及包体声明

create or replace PACKAGE PG_MV_INVENTORY_IUD AS

TYPE inventory_array IS TABLE of NUMBER(18) INDEX BY BINARY_INTEGER

PROCEDURE ISSUE_INVENTORY (P_INVENTORY_BIN_NUMBERS IN inventory_array,
P_INVENTORY_CODE IN VARCHAR2,
P_COUNTY_CODE IN NUMBER,
P_AGENCY_CODE IN NUMBER,
P_PLATE_NUMBER IN VARCHAR2,
P_AGENT_CUSTOMER_NUMBER IN VARCHAR2,
P_DECAL_YEAR IN VARCHAR2,
P_USED_DATE IN DATE,
P_INVENTORY_CONFIG OUT VARCHAR2);
END PG_MV_INVENTORY_IUD;

create or replace PACKAGE BODY PG_MV_INVENTORY_IUD AS

--------------------------------------------------------------------------------------------------

PROCEDURE ISSUE_INVENTORY_BIN_NUM (P_INVENTORY_BIN_NUMBERS IN inventory_array,
P_INVENTORY_CODE IN VARCHAR2,
P_COUNTY_CODE IN NUMBER,
P_AGENCY_CODE IN NUMBER,
P_PLATE_NUMBER IN VARCHAR2,
P_DECAL_YEAR IN VARCHAR2,
P_USED_DATE IN DATE,
P_INVENTORY_CONFIG OUT VARCHAR2)
AS
Inv Inventory%rowtype;
BEGIN

内容的提问来源于stack exchange,提问作者Kenya Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:24:55