Comecemos por uma pesquisa simples: queremos saber quantas filmes estão em nossa videoteca. Na linguagem 4D, o código seria:
C_LONGINT($AllMovies)
$AllMovies:=0
ALL RECORDS([MOVIES])
$AllMovies:=Records in selection([MOVIES])
ALERT("A videoteca contém "+String($AllMovies)+"filmes")
- Como pode ver, pode recuperar o resultado da pesquisa em uma variável (em nosso caso $AllMovies) que está entre os símbolos "<<" e ">>".
Outra forma de referenciar todo tipo de expressão 4D valida (variável, campo, array, “expressão…”) é colocar dois pontos ":" antes da expressão:
C_LONGINT($AllMovies)
$AllMovies:=0
Begin SQL
SELECT COUNT(*)
FROM MOVIES
INTO :$AllMovies
End SQL
ALERT("A videoteca contém "+String($AllMovies)+"filmes")
Deve ser prestada atenção especial as variáveis interprocesso, onde a notação é um pouco diferente: deve colocar uma variável interprocesso entre colchetes "[" e "]":
C_LONGINT(<>AllMovies)
<>AllMovies:=0
Begin SQL
SELECT COUNT(*)
FROM MOVIES
INTO <<[<>AllMovies]>>
End SQL
ALERT("A videoteca contém "+String(<>AllMovies)+"filmes")
- A segunda forma de interagir com o motor SQL é utilizar os comandos SQL genéricos integrados (compatíveis ODBC). A pesquisa simples se converte em:
C_LONGINT($AllMovies)
$AllMovies:=0
SQL LOGIN(SQL_INTERNAL;"";"")
SQL EXECUTE("SELECT COUNT(*) FROM MOVIES";$AllMovies)
SQL LOAD RECORD(SQL all records)
SQL LOGOUT
ALERT("A videoteca contém "+String($AllMovies)+"filmes")
Para maior informação sobre os comandos SQL genéricos, consulte o capítulo SQL do manual de Linguagem 4D.
- A terceira forma de interagir com o motor SQL é utilizar o comando 4D QUERY BY SQL. Neste caso, a pesquisa simples se converte em:
C_LONGINT($AllMovies)
$AllMovies:=0
QUERY BY SQL([MOVIES];"ID <> 0")
$AllMovies:=Records in selection([MOVIES])
ALERT("A videoteca contém "+String($AllMovies)+"filmes")
O comando QUERY BY SQL executa uma pesquisa de tipo SELECT que pode ser escrita desta forma:
SELECT *
FROM myTable
WHERE <SQL_Fórmula>
myTable é o nome da tabela passada no primeiro parâmetro e SQL_Formula é o texto da pesquisa passado como segundo parâmetro:
QUERY BY SQL(myTable;SQL_Formula)
Em nosso caso não há cláusula WHERE, então forçamos uma: "ID <> 0". O equivalente da pesquisa em código SQL é:
SELECT *
FROM MOVIES
WHERE ID <> 0
Atenção: Você pode ver que neste último exemplo, utilizamos variáveis processo. Isto é necessário se quer utilizar a base em modo compilado. Neste contexto, em efeito, não é possível utilizar variáveis locais com o comando EXECUTE IMMEDIATE.
Para provar todos estes exemplos, lance a base "4D SQL Code Samples" e mostre a caixa de diálogo principal. A esquerda da janela, pode escolher o modo de interrogação do motor de 4D:

Depois pressione o botão SQL query results in variables.