4D v16

Receber o resultado de um pedido SQL em uma variável

Página Inicial

 
4D v16
Receber o resultado de um pedido SQL em uma variável

Receber o resultado de um pedido SQL em uma variável  


 

 

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")

  • A primeira forma de interagir de uma forma similar com o motor SQL é localizar o pedido entre as etiquetas Begin SQL e End SQL. Desta forma, a pesquisa anterior se converte em:

     C_LONGINT($AllMovies)
     $AllMovies:=0
     Begin SQL
        SELECT COUNT(*)
        FROM MOVIES
        INTO <<$AllMovies>>
     End SQL
     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
      ` Inicializa uma conexão com o motor SQL interno
     SQL LOGIN(SQL_INTERNAL;"";"")
      ` Executa a pesquisa e devolve o resultado na variável $AllMovies
     SQL EXECUTE("SELECT COUNT(*) FROM MOVIES";$AllMovies)
      ` Recupera todos os registros encontrados
     SQL LOAD RECORD(SQL all records)
      ` Fecha a conexão
     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
  • A quarta forma de interagir com o motor SQL é utilizar o comando SQL dinâmico EXECUTE IMMEDIATE. O código se converte em:

     C_LONGINT($AllMovies)
     $AllMovies:=0
     C_TEXT($tQueryTxt)
     $tQueryTxt:="SELECT COUNT(*) FROM MOVIES INTO :$AllMovies"
     Begin SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     End SQL
     ALERT("A videoteca contém "+String($AllMovies)+"filmes")

 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.

 
PROPRIEDADES 

Produto: 4D
Tema: Tutorial

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)