PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come utilizzare i nomi di colonna dinamici in un'istruzione UPDATE o SELECT in una funzione?

In un UPDATE istruzione in PL/pgSQL, il nome della tabella deve essere dato come valore letterale. Se vuoi impostare dinamicamente il nome della tabella e le colonne, dovresti usare EXECUTE comando e incollare la stringa di query insieme:

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;

Il USING La clausola può essere utilizzata solo per sostituire i valori dei dati, come mostrato sopra.