Tho*_*ten 2 sql arrays oracle plsql
这是我希望在PL-SQL(Oracle)中能够做的简化的伪代码版本:
DECLARE
mylist as ARRAY
BEGIN
mylist (1) := '1'
mylist (2) := '3'
...
SELECT *
FROM aTable
WHERE aKey IN mylist;
END;
Run Code Online (Sandbox Code Playgroud)
SELECT应返回mylist(1),mylist(2)等的匹配记录.它应该与ORing所有值类似,但当然我们事先并不知道我们得到了多少值.
我怎样才能做到这一点?我知道PL/SQL有一些集合数据类型,但我似乎无法让它们在SQL语句中正常工作.
谢谢你的任何想法.
这很容易用这个TABLE()功能.一个问题是数组变量必须使用SQL中声明的类型.这是因为SELECT使用SQL引擎,因此PL/SQL声明超出范围.
SQL> create or replace type numbers_nt as table of number
2 /
Type created.
SQL>
SQL> declare
2 l_array numbers_nt;
3 begin
4 l_array := numbers_nt (7521,7566,7654);
5 for r in ( select ename
6 from emp
7 where empno in ( select *
8 from table (l_array)
9 )
10 )
11 loop
12 dbms_output.put_line ( 'employee name = '||r.ename);
13 end loop;
14 end;
15 /
employee name = PADFIELD
employee name = ROBERTSON
employee name = BILLINGTON
PL/SQL procedure successfully completed.
SQL>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17248 次 |
| 最近记录: |