Professional Documents
Culture Documents
CHAVE conjunto mnimo de atributos cujo valor identifica inequivocamente cada ocorrncia da entidade
CHAVES CANDIDATAS.
Chave 1
Chave 2
Texto SELECT SINGLE * FROM <tabela> WHERE <Chave 1> = 10 AND <Chave 2> = B. Ao especificar inequivocamente a totalidade da chave da tabela garantimos que nunca ser devolvido mais do que um registro.
10
Texto 3
10
Texto 2
20
Texto 3
SELECT SINGLE * FROM <tabela> WHERE <campo chave 1> = campo 1> AND <campo chave 2> = <campo 2> AND <campo chave n> = <campo n >.
Expresses Utilizadas SINGLE pressupe somente um registro vlido, ento expresses como <campo> >= <valor> no so utilizadas porque retornam mais de 1 registro que preenche as condies. Tenha cuidado ao montar a expresso em acessos SQL do tipo SINGLE.
ENDSELECT.
10
Texto 2
Quando o critrio de seleo de registros no especifica inequivocamente a chave na sua totalidade, existe a possibilidade de a instruo devolver um n indeterminado de registros. Os registros selecionados vo sendo disponibilizados para processamento um a um dentro de um loop SELECT ENDSELECT.
20
Texto 3
ENDSELECT.
<operador relacional >: EQ GE LE NE GT LT = >= ou => <= ou =< <> ou >< > <
SY-DBCNT = n
SELECT * FROM <tabela> WHERE <campo da tabela> BETWEEN <campo 1> AND <campo 2>
COUNTRY ID ...
NAME1
TABLES: TABNA. SELECT * FROM TABNA. WRITE: / TABNA-COUNTRY, TABNA-ID, TABNA-NAME1, ... . ENDSELECT.
SY-SUBRC
?
= 0 foi encontrado pelo menos um registro = 4 no foi encontrado qualquer registro = 8 a chave no foi completamente especificada em um SELECT SINGLE, o registro encontrado pode no ser o nico que satisfaria a condio.
SELECT * FROM <tabela> INTO TABLE <tabela interna> ou INTO CORRESPONDING FIELDS OF TABLE <tabela interna>
WHERE <campo 1 da tabela> <operador relacional> <campo 1> AND ( <campo 2 da tabela> <operador relacional> <campo 2> OR <campo 3 da tabela> <operador relacional> <campo 3> ) . . AND <campo n da tabela> <operador relacional> <campo n>.
SY-DBCNT = 1
SELECT * FROM <tabela> APPENDING TABLE <tabela interna>| APPENDING CORRESPONDING FIELDS OF TABLE <tabela interna>
<campo_1> <operador relacional> <variavel_1> <campo_2> <operador relacional> < variavel_ 2> <campo_3> <operador relacional> < variavel_ 3> ) <campo_n> <operador relacional> < variavel_ n>.
appending table = tabela tem a mesma estrutura appending corresponding fields of table = tabela tem estrutura diferente
SY-DBCNT = 1
<campo 1 da tabela> <operador relacional> <campo 1> ( <campo 2 da tabela> <operador relacional> <campo 2> <campo 3 da tabela> <operador relacional> <campo 3> )
ENDSELECT.
SY-DBCNT = n
Campos da tabela interna e adicionalmente outros
Questes de performance
Ir buscar BD apenas os campos necessrios. Vantagem : uso de menos memria. SELECT lifnr FROM lfa1 INTO (lfa1-lifnr).
Os dados repetidos podem ser eliminados da seleco atravs da adio DISTINCT. SELECT DISTINCT lifnr FROM lfa1.
Funes de agregao evitam manipulao desnecessria dos dados. SELECT COUNT( DISTINCT bukrs) MAX(bukrs) MIN(bukrs) INTO (var1, var2, var3).
OR <campo 3 da tabela> <operador relacional> <campo 3> ) ... AND <campo n da tabela> <operador relacional> <campo n>.
Tabela interna
ENDSELECT.
Restries: Como valores apenas so admitidos literais e no variveis; No permitido o uso da clusula IN nesta sintaxe;
ENDSELECT.
REPORT Z00SELECT. TABLES : SCARR. DATA: BEGIN OF TMP OCCURS 0. INCLUDE STRUCTURE SCARR. DATA : END OF TMP.
PARA AREA DE TRABALHO SCARR DA WORK AREA SCARR PARA TABELA INTERNA TMP.
SELECT * FROM SCARR WHERE <clausulas>. PARA AREA DE TRABALHO SCARR TMP = SCARR. PREENCHE AREA DE TRABALHO TMP APPEND TMP. TABELA INTERNA TMP *no usar esta forma de select, embora seja de sintaxe correta ENDSELECT.
SELECT * FROM SCARR WHERE <clausulas>. MOVE-CORRESPONDING SCARR TO TMP. APPEND TMP. ENDSELECT. SELECT * FROM SCARR INTO TABLE TMP WHERE <clausulas>.
PARA AREA DE TRABALHO SCARR PREENCHE WORK AREA TMP DA WORK AREA TMP PARA TABELA TMP
REPORT Z00SELECT. TABLES : SCARR. DATA: BEGIN OF TMQ OCCURS 0. INCLUDE STRUCTURE SCARR. DATA : FIELD_A(20) TYPE C, FIELD_B(20) TYPE C, FIELD_C(20) TYPE C, END OF TMQ.
SELECT * FROM SCARR INTO CORRESPONDING FIELDS OF TMQ WHERE <clausulas>. APPEND TMQ. ENDSELECT.
SELECT * FROM SCARR INTO CORRESPONDING FIELDS OF TABLE TMQ WHERE <clausulas>.
SELECT * FROM SCARR WHERE <clausulas>. PARA AREA DE TRABALHO SCARR MOVE-CORRESPONDING SCARR TO TMQ. PREENCHE WA TMQ APPEND TMQ. DA WA TMP PARA TABELA TMQ ENDSELECT.
INSTRUO
SELECT INTO TABLE TMP SELECT INTO CORRESPONDING FIELDS OF TABLE TMP SELECT INTO TMP SELECT INTO CORRESPONDING FIELDS OF TMP
ONDE ESCREVE
TABELA INTERNA TMP TABELA INTERNA TMP AREA DE TRABALHO TMP AREA DE TRABALHO TMP