繁体   English   中英

如何将键和值作为参数传递给 pl/sql 中的存储过程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM