我如何使用数组查询

Mas*_*n_M 2 arrays oracle parameters plsql

我在Oracle中使用array参数创建了一个过程:

create or replace PACKAGE my_pkg AS

TYPE USER_ID_TYPE IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;

create or replace procedure my_proc (my_id varchar2, ids USER_ID_TYPE)
is
  xxxx xxxx xxxx ....
end;
Run Code Online (Sandbox Code Playgroud)

我想在sqldeveloper中测试一下.

我怎样才能做到这一点?

我试过这样的:

exec('1010', ('111', '222')) -> fail 

exec('1010', ['111', '222']) -> fail

exec('1010' ARRAY('111', '222')) -> fail
Run Code Online (Sandbox Code Playgroud)

我只想在sqldeveloper中使用带有数组的过程.

Ste*_*ein 6

在最近发布的18.1版Oracle数据库(可在livesql.oracle.com和Oracle Cloud上免费探索)中,您可以使用限定表达式来执行您想要的操作:构建一个关联数组"飞行"在程序的调用:

CREATE OR REPLACE PACKAGE my_pkg
AS
   TYPE user_id_type IS TABLE OF VARCHAR2 (50)
      INDEX BY BINARY_INTEGER;
END;
/

CREATE OR REPLACE PROCEDURE my_proc (
   my_id VARCHAR2, ids my_pkg.user_id_type)
IS
BEGIN
   DBMS_OUTPUT.put_line ('COUNT = ' || ids.COUNT);
END;
/

BEGIN
   my_proc ('steven', 
            my_pkg.user_id_type (1 => '111', 2=> '222'));
END;
/

Package created.
Procedure created.
COUNT = 2
Run Code Online (Sandbox Code Playgroud)

查看我的LiveSQL脚本,更详细地探索数组的限定表达式.