Можно ли передавать массивы как параметры в процедурах? - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь передать массив в качестве параметра в моей процедуре, но получаю команду неизвестная ошибка

код

    SET SERVEROUTPUT ON;

    TYPE pourcentage_remise IS TABLE OF NUMBER INDEX BY commandeproduit.ref_produit%type;

    CREATE OR REPLACE PROCEDURE remise_produit( pourcent IN pourcentage_remise,
                            ref_comm IN commande.ref_commande%type,
                            c_ht OUT commandeproduit.prix_ht%type,
                            c_ttc OUT commandeproduit.prix_ttc%type)
    IS
    CURSOR p_curs IS 
    SELECT ref_produit, prix_ttc, prix_ht  FROM commandeproduit WHERE concerne = ref_comm ;
    ref commandeproduit.ref_produit%type;
    ttc commandeproduit.prix_ttc%type;
    ht commandeproduit.prix_ht%type;

    BEGIN
        open p_curs;
            LOOP
                FETCH p_curs into ref, ttc, ht;
                EXIT WHEN p_curs%notfound;
                dbms_output.put_line(ref, ' ',ht, ' ', ttc);
                IF pourcent(ref) THEN
                    ttc := ttc - ttc * pourcent(ref);
                    ht := ht - ttc * pourcent(ref);
                    INSERT INTO commandeproduit(prix_ht, prix_ttc) VALUES(ht, ttc) WHERE concerne = ref_comm AND ref_produit = ref;
                END IF;
                dbms_output.put_line(ref, ' ',ht, ' ', ttc);
            END LOOP;
        close p_curs;
    END remise_produit;
    /

вызов процедуры

DECLARE 
pourcentage pourcentage_remise;
reference commande.ref_commande%type :=1;
BEGIN
pourcentage('A01') :=0.15;
pourcentage('B15') :=0.2;
remise_produit(pourcentage, reference);
END;
/

таблица

enter image description here

ошибка на французскомэто означает, что команда неизвестна

enter image description here

, пожалуйста, помогите

...