Affichage Dynamique EXÉCUTER Sortie Dans pl/sql sqlplus
Comment obtenir la dynamique des résultats de sélection de EXECUTE
au sein de PL/SQL de Oracle sqlplus
?
Je suis en train d'écrire un simple sqlplus script de recueillir la somme de tous les NUMBER
colonnes d'une table:
SET SERVEROUTPUT ON
DECLARE
CURSOR column_cur IS
SELECT column_name FROM ALL_TAB_COLS
WHERE owner = '&scheme_name' AND table_name = '&table_name'
AND data_type = 'NUMBER';
sql_query VARCHAR2(32767);
BEGIN
sql_query := 'select ';
FOR column_rec IN column_cur LOOP
sql_query := sql_query || 'SUM(' || column_rec.column_name ||
') "SUM(' || column_rec.column_name || ')", ';
END LOOP;
sql_query := substr(sql_query, 0, length(sql_query)-2) || -- remove trailing ', '
' from &scheme_name' || '.&table_name';
EXECUTE IMMEDIATE sql_query;
END;
/
Le SQL générées de manière dynamique instruction, lorsqu'il est exécuté, donne quelque chose comme:
SUM(X) | SUM(Y) | SUM(Z) |
--------------------------
111 | 222 | 333 |
Cependant, même avec SET SERVEROUTPUT ON
, l'exécution de la sqlplus script donne:
PL/SQL procedure successfully completed.
OriginalL'auteur Jerry | 2009-09-02
Vous devez vous connecter pour publier un commentaire.
vous aurez besoin de récupérer le résultat de votre SELECT afin de l'afficher. Vous devez utiliser la syntaxe
EXECUTE IMMEDIATE sql_query INTO var1, var2.. varn
. Cependant, dans votre cas, le nombre de colonnes est inconnu au moment de la compilation.Il y a un certain nombre de façons de résoudre ce:
Je vais démo 1:
Jerry, vous pouvez maintenant (je crois que vous n'avez besoin que de 15 rep à voter)
OriginalL'auteur Vincent Malgrat