arrays - 如何将查询与数组一起使用

标签 arrays oracle plsql parameters

我在Oracle中使用数组参数制作了一个过程:

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;

我想在 sqldeveloper 中测试它。

我该怎么做?

我尝试过这样的:

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

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

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

我只想将 sqldeveloper 中的过程与数组一起使用。

最佳答案

在最近发布的 Oracle 数据库 18.1 版本中(可在 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

查看我的LiveSQL script更详细地探索数组的限定表达式。

关于arrays - 如何将查询与数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775854/

相关文章:

c# - 获取过程参数的数据类型

python - 将字符串和数字读入数组

c++ - 为什么在构造函数中使用 fread 时我的程序会崩溃?

arrays - Golang中比较两个 slice 并删除唯一值

oracle - SDO_INSIDE 返回零记录

Oracle 更改夏令时的时间戳列值

javascript - 在 jquery 中创建循环

java.sql.SQLException : Io exception: Size Data Unit (SDU) mismatch

sql - PL/SQL : Encountered the symbol "END"

java - 使用 JDBC 时,Oracle 在 Postgresql 中的 REF CURSOR 等效于什么?