Ich möchte alle Zeilen und Felder aus einer Tabelle zurückgeben, wo weder der Tabellenname noch die Feldnamen im Voraus bekannt sind. Etwas wie:Wie benennt man Tabelle dynamisch in Oracle SQL Select Statement?
select * from [TABLENAME]
diese andere Methode sieht vielversprechend aus, aber select * from test_cursor
gibt „Versuch, den Zugriff auf Zeilen eines Artikels, dessen Typ nicht bekannt ist ...“ https://stackoverflow.com/a/101064/209942
EXECUTE IMMEDIATE
scheint vielversprechend, aber ich lesen Sie, dass das Zurückgeben mehrerer Zeilen einen Cursor erfordert, und ich kann kein Beispiel finden.
Bevorzugen Sie eine Lösung, die sehr einfach und schnell ist (dh, Zeile für Zeile vermeiden möchten).
Möchten Sie vermeiden, eine Funktion oder Prozedur zu erstellen, aber vielleicht ist das unvermeidlich. Vielleicht muss ich eine Tabellenfunktion verwenden?
Vielleicht etwas wie das Folgende?
CREATE OR REPLACE FUNCTION GetTable(table_name CHAR)
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE temp_table
AS (SELECT * FROM :1)' USING table_name;
END;
SELECT * FROM table (temp_table)
thx
prüfen Paket [ DBMS_SQL] (https://docs.oracle.com/database/121/ARPLS/d_sql.htm#ARPLS058), dort können Sie vollständige dynamische SQL-Anweisungen ausführen. –