J'ai écrit une fonction pour obtenir un certain nombre de valeurs dans une vue Oracle. Comme les fonctions ne peuvent pas retourner plus d'une valeur, j'ai utilisé un objet (avec une signature de 8 chiffres). Cela fonctionne, mais pas bien ...Oracle SQL et PL/SQL: comment réduire le temps d'exécution de la récupération des membres de l'objet (retourné par la fonction utilisateur)
Le temps d'exécution d'une requête de sélection (et la sélection de la vue, à partir de cette requête) est proportionnelle au nombre de membres récupéré, à savoir:
récupération de 1 attribut consomme 1 seconde (il est égal à récupérer un objet entier, mais la valeur de l'objet est inutilisable pour le rapport), récupération de 2 attributs consomme 2 secondes, et ainsi de suite ...
Cela ressemble à Oracle exécute la fonction PL pour obtenir tous les membres de retour objet. Je pense que cette fonction, retourner varray (8) de nombres ne résoudra pas le problème aussi: huit appels implicites doivent être remplacés par huit sous-requêtes explicites. Quelqu'un peut-il résoudre ce problème? (À l'exception de réécrire à utiliser une fonction renvoyant une chaîne, que je vais essayer moi-même maintenant ...)
Voici la déclaration de type:
create or replace type "ARD"."PAY_FINE_FR_12_" AS object
(fed1 number
, reg1 number
, fed_nach number
, reg_nach number
, fed_upl number
, reg_upl number
, fed2 number
, reg2 number);
Nous avons besoin de détails - les tableaux (y compris la colonne et le type de données) et la sortie désirée. Franchement, une fonction au sommet d'une vue est une recette pour un désastre. –
Créer ou remplacer le type "ARD". "PAY_FINE_FR_12_" Objet AS (numéro fed1, numéro reg1, numéro fed_nach, numéro reg_nach, numéro de fed_upl, numéro de reg_upl, numéro fed2, numéro reg2); – Patrinvv
Nous avons également besoin de voir la fonction et la vue que vous utilisez, car on ne sait pas comment cela fonctionne. – APC