A instru????o SELECT consiste de uma consulta com uma Cl??usula ORDER BY opcional, e uma Cl??usula FOR UPDATE opcional. A instru????o SELECT possui este nome porque tipicamente a primeira palavra da constru????o da consulta ?? SELECT (A consulta inclui a express??o VALUES, as express??es UNION, INTERSECT e EXCEPT, al??m de express??es SELECT).
A Cl??usula ORDER BY garante a ordem do ResultSet. A Cl??usula FOR UPDATE torna o resultado um cursor atualiz??vel. A instru????o SELECT suporta a cl??usula FOR FETCH ONLY. A cl??usula FOR FETCH ONLY ?? sin??nimo da cl??usula FOR READ ONLY.
Consulta [Cl??usula ORDER BY] [Cl??usula FOR UPDATE] WITH {RR|RS|CS|UR}
Pode ser definido o n??vel de isolamento da instru????o SELECT utilizando a sintaxe WITH {RR|RS|CS|UR}.
-- listar o nome da express??o SAL??RIO+B??NUS+COMISS -- como PAGAMENTO_TOTAL, -- e ordenar pelo novo nome PAGAMENTO_TOTAL SELECT PRIMEIRO_NOME, SAL??RIO+B??NUS+COMISS AS PAGAMENTO_TOTAL FROM EMPREGADOS ORDER BY PAGAMENTO_TOTAL; -- criar um cursor atualiz??vel atrav??s da cl??usula FOR UPDATE -- para atualizar as colunas data de in??cio (PROJ_DATA_IN??CIO) e -- data de t??rmino (PROJ_DATA_FIM) da tabela PROJETO SELECT NUM_PROJ, PROJ_DATA_IN??CIO, PROJ_DATA_FIM FROM PROJETO FOR UPDATE OF PROJ_DATA_IN??CIO, PROJ_DATA_FIM; -- definir o n??vel de isolamento como RR apenas para esta instru????o SELECT * FROM V??OS WHERE ID_V??O BETWEEN 'AA1111' AND 'AA1112' WITH RR;
Se a instru????o SELECT atender aos requisitos listados abaixo, os cursores ser??o atualiz??veis apenas se for especificado FOR UPDATE na cl??usula FOR (consulte a Cl??usula FOR UPDATE).
N??o existe instru????o na linguagem SQL para atribuir nome a um cursor. Em vez disso, deve ser utilizada a API do JDBC para atribuir nomes a cursores ou obter os nomes gerados pelo sistema. Para obter mais informa????es, deve ser consultado "Atribuir nome ou acessar o nome do cursor" no cap??tulo 5 do Guia do Desenvolvedor do Derby.
Os cursores s??o apenas-de-leitura por padr??o. Para um cursor ser atualiz??vel, deve ser especificado FOR UPDATE na cl??usula FOR (consulte a Cl??usula FOR UPDATE).
A instru????o SELECT depende de todas as tabelas e vis??es especificadas na consulta, e dos conglomerados (unidades de armazenamento, como heaps e ??ndices) escolhidos como caminho de acesso para estas tabelas. A instru????o CREATE INDEX n??o invalida a instru????o SELECT preparada. A instru????o DROP INDEX invalida a instru????o SELECT preparada, se o ??ndice for um caminho de acesso na instru????o. Quando o SELECT inclui vis??es, tamb??m depende dos objetos do dicion??rio dos quais as vis??es dependem (consulte a Instru????o CREATE VIEW).
Toda instru????o UPDATE WHERE CURRENT ou DELETE WHERE CURRENT preparada sobre cursor de SELECT depende do SELECT. A remo????o do SELECT atrav??s de uma instru????o java.sql.Statement.close invalida UPDATE WHERE CURRENT e DELETE WHERE CURRENT.
O SELECT depende de todos os aliases utilizados na consulta. Remover um ali??s invalida a instru????o SELECT preparada, se a instru????o utilizar o ali??s.