L'obtention de résultats dans un ensemble de résultats de dynamique SQL dans Oracle

Cette question est similaire à un couple d'autres, j'ai trouvé sur StackOverflow, mais les différences sont assez importants pour moi, pour justifier une nouvelle question, si elle est ici:

Je souhaite obtenir un ensemble de résultats de dynamique SQL dans Oracle et ensuite de les afficher sur un ensemble de résultats dans un SqlDeveloper-comme outil, comme si j'avais exécuté l'instruction SQL dynamique directement. C'est simple, SQL Server, afin d'être concret, voici un exemple à partir de SQL Server qui renvoie un jeu de résultats dans SQL Server Management Studio ou de la Requête Explorer:

EXEC sp_executesql N'select * from countries'

Ou plus correctement:

DECLARE @stmt nvarchar(100)
SET @stmt = N'select * from countries'
EXEC sp_executesql @stmt

La question "Comment retourner un jeu de résultats /curseur à partir d'un Oracle PL/SQL anonyme bloc qui exécute SQL Dynamique?" adresses de la première moitié du problème, de l'exécution du SQL dynamique dans un curseur. La question "Comment faire de l'Oracle de la procédure de retour des ensembles de résultats" fournit une réponse similaire. La recherche sur le Web a révélé de nombreuses variations sur le même thème, tous les aborder seulement la première moitié de ma question. J'ai trouvé ce post expliquant comment le faire dans SqlDeveloper, mais qui utilise un peu de la fonctionnalité de SqlDeveloper. Je suis en fait à l'aide d'une requête personnalisée de l'outil, donc j'ai besoin de la solution de l'auto-contenues dans le code SQL. Cette coutume outil de requête de la même façon n'a pas la capacité pour afficher le résultat de l'impression (dbms_output.put_line) déclarations; il affiche uniquement les ensembles de résultats. Voici encore encore une avenue possible à l'aide de 'exécution immédiate...bulk collect", mais cet exemple encore rend les résultats avec une boucle de dbms_output.put_line consolidés. Ce lien tente d'aborder le sujet, mais la question ne sera jamais obtenu de réponse non plus.

En supposant que cela est possible, je vais ajouter une condition: je voudrais le faire sans avoir à définir une fonction ou une procédure (en raison du nombre limité DB autorisations). C'est, je voudrais exécuter un auto-contenue PL/SQL bloc contenant le SQL dynamique et retour dans l'ensemble des résultats SqlDeveloper ou un outil similaire.


Donc, pour résumer:

  • Je veux exécuter un arbitraire instruction SQL (d'où le SQL dynamique).
  • La plate-forme Oracle.
  • La solution doit être une PL/SQL bloc avec pas de procédures ou de fonctions.
  • La sortie doit être produite canonique ensemble de résultats; aucune des instructions d'impression.
  • La sortie doit rendre que dans l'ensemble des résultats SqlDeveloper sans l'aide de toute SqlDeveloper des fonctionnalités spéciales.

Des suggestions?