PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment utiliser des noms de colonnes dynamiques dans une instruction UPDATE ou SELECT dans une fonction ?

Dans une UPDATE dans PL/pgSQL, le nom de la table doit être donné sous forme littérale. Si vous souhaitez définir dynamiquement le nom de la table et les colonnes, vous devez utiliser le EXECUTE commande et collez la chaîne de requête ensemble :

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;

Le USING La clause ne peut être utilisée que pour remplacer des valeurs de données, comme indiqué ci-dessus.