Hey !
Ich habe eine Tabelle die n Spalten enthält (Tabelle A). Die Namen dieser Spalten werden aus einer anderen Tabelle (Tabelle B) generiert.
Nun möchte ich in einer Funktion über einen Select-Befehl den Inhalt dieser Spalte abfragen.
Der Inhalt der Abfrage aus Tabelle B ergibt einen String(Text). Den ich noch erweitern muss, da es nur aus Zahlen besteht.
Möchte ich im nächsten Schritt den Inhalt von der Spalte aus Tabelle A abfragen.
Beispiel:
DECLARE
columnName TEXT;
valueAmount INTEGER;
columnName := ‘id_’ || (select productgrupping_id from TabelleB where … ); – =>Ergibt einen Text
…
valueAmount := (SELECT columnName from TabelleA where …);-- => Das geht nicht, da nicht der Inhalt sondern der Name von columnName zurückgegeben wird.
Ich möchte also zum Spatennamen deklarieren.
Wie kann ich das erreichen?
Habe ich getan (Ausgabe):
HINWEIS: SELECT id_150009160 from TabelleA where ohed_id = 518546;
Sieht doch gut aus!?!
mache ich dann den Aufruf (Fehler beim compilieren):
EXECUTE queryText; – => Syntaxfehler bei »$1« LINE 1: SELECT (EXECUTE $1 )
Jetzt habe ich den String ohne Variable an das EXECUTE gehängt (Fehler erst bei der Ausführung):
valueAmount := EXECUTE SELECT id_150009160 from TabelleA where ohed_id = 518546; –
=> FEHLER: Typ »execute« existiert nicht LINE 1: SELECT EXECUTE ’ SELECT ’ || $1 || ’ from TabelleA …