PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verwende ich dynamische Spaltennamen in einer UPDATE- oder SELECT-Anweisung in einer Funktion?

In einem UPDATE -Anweisung in PL/pgSQL muss der Tabellenname als Literal angegeben werden. Wenn Sie den Tabellennamen und die Spalten dynamisch setzen möchten, sollten Sie das EXECUTE verwenden Befehl und fügen Sie die Abfragezeichenfolge zusammen ein:

EXECUTE 'UPDATE ' || quote_ident(r.relname) ||
       ' SET ' || quote_ident(r.cols_list[1]) || ' = $1, ' || 
                  quote_ident(r.cols_list[2]) || ' = $2' ||
       ' WHERE ' || quote_ident(r.cols_list[1]) || ' = $3 AND ' ||
                    quote_ident(r.cols_list[2]) || ' = $4'
USING ncicd9, ncdesc, ocicd9, ocdesc;

Der USING -Klausel kann nur zum Ersetzen von Datenwerten verwendet werden, wie oben gezeigt.