PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como usar nomes de colunas dinâmicas em uma instrução UPDATE ou SELECT em uma função?


Em um UPDATE instrução em PL/pgSQL, o nome da tabela deve ser fornecido como um literal. Se você deseja definir dinamicamente o nome da tabela e as colunas, você deve usar o EXECUTE comando e cole a string de consulta:
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;

O USING A cláusula só pode ser usada para substituir valores de dados, conforme mostrado acima.