comando_SELECT_dinâmico :
expressão_de_consulta
[ cláusula_ORDER_BY | cláusula_FOR_UPDATE ]
cláusula_FOR_UPDATE : FOR UPDATE OF { * | coluna [ , coluna]… }
expressão_de_consulta :
{ especificação_de_consulta |
( expressão_de_consulta ) }
[ UNION [ ALL ]
{ especificação_de_consulta |
( expressão_de_consulta ) } ]…
especificação_de_consulta :
cláusula_SELECT
cláusula_FROM
[ cláusula_WHERE ]
[ cláusula_GROUP_BY ]
[ cláusula_HAVING ]
O comando SELECT dinâmico retorna a tabela definida pela expressão de consulta, opcionalmente ordenada pela cláusula ORDER BY. A tabela será dita atualizável, se a especificação de cursor for atualizável e não for declarada a cláusula ORDER BY.
Se a cláusula ORDER BY não for especificada, as linhas da tabela poderão ser recuperadas em qualquer ordem, com resultado não previsível.
Se a opção ALL não for especificada com o operador UNION, serão eliminadas do resultado as linhas duplicadas.
A cláusula FOR UPDATE tem efeito apenas quando se trata de um SELECT a ser usado numa declaração dinâmica de cursor. Seu uso é obrigatório quando o cursor for ser usado para atualizações posicionadas na tabela. Neste caso somente as colunas especificadas na cláusula poderão ser atualizadas com o comando UPDATE.
Veja também Cursor, Cláusulas, Expressão de Consulta e Especificação de consulta.