[英]How to pass keys and values as a parameter to stored procedure in pl/sql
对于存储过程,我需要将键和值作为参数传递,但问题是我需要传递具有各自键值的数组而不是值。`
SET SERVEROUTPUT ON;
DECLARE
TYPE filter_map_type IS
TABLE OF VARCHAR2(30) INDEX BY VARCHAR2(30);
TYPE valuearray IS
VARRAY(5) OF VARCHAR2(10);
filter_map filter_map_type;
key_map VARCHAR2(30);
x valuearray;
BEGIN
filter_map('Key 1') := 'Value 1';
filter_map('Key 2') := 'value 2';
filter_map('Key 3') := 'Value 3';
x := valuearray('a1', 'a2', 'a3');
key_map := filter_map.first;
WHILE key_map IS NOT NULL LOOP
dbms_output.put_line('element('
|| key_map
|| '): '
|| filter_map(key_map));
key_map := filter_map.next(key_map);
END LOOP;
END;
而不是 filter_map 中的 value1 我需要传递一个数组(x)。 喜欢:-
filter_map('country'):= ('india','us','japan'); filter_map('city'):= ('mumbai','hyderabad','delhi');
你可以试试这个:
DECLARE
TYPE valuearray IS
VARRAY(5) OF VARCHAR2(10);
TYPE filter_map_type IS
TABLE OF valuearray INDEX BY VARCHAR2(30);
filter_map filter_map_type;
key_map VARCHAR2(30);
x valuearray;
y valuearray;
z valuearray;
BEGIN
x := valuearray('a1', 'a2', 'a3');
y := valuearray('b1', 'b2', 'b3');
z := valuearray('c1', 'c2', 'c3');
filter_map('Key 1') := x;
filter_map('Key 2') := y;
filter_map('Key 3') := z;
key_map := filter_map.first;
WHILE key_map IS NOT NULL LOOP
dbms_output.put_line('element('|| key_map|| '): (' || filter_map(key_map)(1) || ', ' || filter_map(key_map)(2) || ', ' || filter_map(key_map)(3) || ')' );
key_map := filter_map.next(key_map);
END LOOP;
END;
如果您的valuearray
的大小是动态的,则可以执行另一个循环以打印它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.