Question

Je dois appeler un certain nombre de procédures différentes au sein d'un package Oracle successivement dans une transaction. En fait, je dois les appeler environ 5000 fois. Je me demandais ce que je pouvais utiliser la syntaxe pour ces lots appels à Oracle, donc je besoin d'un seul aller-retour. J'ai essayé

PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5;

mais je reviens ORA00900. Instruction SQL non valide

Les pointeurs? Je sais que sur les tableaux de passage des paramètres à des procédures mais qui n'aider beaucoup dans ce cas malheureusement.

Était-ce utile?

La solution

est un bloc Simplest PL / SQL anonyme. EG:

DECLARE
  v_file_loc varchar2(100) := '....';
  v_file_name varchar2(100) := '....';
  v_text varchar2(4000);
BEGIN
    dbms_output.put_line('Starting file read');
    fp := UTL_FILE.FOPEN(v_file_loc,v_file_name,'r');
    LOOP
        utl_file.GET_LINE(fp,v_text);
        dbms_output.put_line(v_text);
    END LOOP;
    UTL_FILE.FCLOSE(fp);
END;
/

Ensuite, vous pouvez passer à l'étape supplémentaire et créer réellement comme une procédure dans le DB, et il suffit d'appeler la procédure. PS. La barre oblique à la fin indique SQL * Plus ou SQL Developer pour exécuter le code. Cela dépend de ce que vous utilisez pour exécuter le SQL.

Autres conseils

Et engager un réseau aller-retour pour chaque appel? On dirait que la mort à la performance. Peut-être mieux de réécrire la procédure stockée de sorte que vous pouvez réduire le trafic réseau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top