4D v14.3SQL EXECUTE |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
SQL EXECUTE
|
SQL EXECUTE ( instrucaoSQL {; objAssoc}{; objAssoc2 ; ... ; objAssocN} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
instrucaoSQL | Texto |
![]() |
Comando SQL a executar | |||||
objAssoc | Variável, Campo |
![]() |
Recebe resultado (se necessário) | |||||
O comando SQL EXECUTE é utilizado para executar um comando SQL e associar o resultado a objetos 4D (arrays, variáveis ou campos).
Para que o comando possa ser executado, uma conexão válida precisa ser especificada no processo atual.
O parâmetro instrucaoSQL contem o comando SQL a executar. objAssoc recebe os resultados. As variáveis estão associadas na ordem de sequência da coluna, o que significa que as colunas restantes são ignoradas..
Se os campos 4D são passados como parâmetros em objAssoc, o comando criará registros e os guardará automaticamente. Os campos 4D devem vir da mesma tabela (não é possível passar um campo da tabela 1 e um campo da tabela 2 na mesma chamada). Se forem passados campos de diferentes tabelas, um erro é gerado.
Atenção: Quando passe os campos 4D nos parâmetros objAssoc e execute o comando SELECT, sempre são os dados da fonte 4D remota os que se modificam. Se você quer recuperar dados de uma fonte remota localmente, deve utilizar arrays locais intermediários e chamar ao comando INSERT (ver o exemplo 6).
Se passa arrays 4D nos parâmetros objAssoc, é recomendável declarar antes de chamar o comando com o objetivo de controlar o tipo de dados processados. Os arrays são redimensionados automaticamente quando for necessário.
No caso de uma variável 4D, apenas um registro é recuperado a cada vez. Os outros resultados são ignorados..
Nota: Para maior informação sobre o referenciado das expressões 4D em pesquisas SQL, consulte a seção Introdução aos comandos SQL.
Neste exemplo, obteremos a coluna ename da tabela emp da fonte de dados externos. O resultado é armazenado no campo 4D [Empregados]Nome. Os registros 4D são criados automaticamente:
SQLStmt:="SELECT ename FROM emp"
SQL EXECUTE(SQLStmt;[Empregados]Nome)
SQL LOAD RECORD(SQL all records)
Para controlar a criação de registros, é possível incluir o código numa transação e confirmá-la unicamente se a operação teste for satisfatória:
SQL LOGIN("mysql";"root";"")
SQLStmt:="SELECT campo _alfa FROM ap_Tabela_Testea"
START TRANSACTION
SQL EXECUTE(SQLStmt;[Tabela 2]Campo1)
While(Not(SQL End selection))
SQL LOAD RECORD
... `Escrever o código de validação de dados aqui
End while
VALIDATE TRANSACTION `Validação da transação
Neste exemplo, queremos obter a coluna ename da tabela emp da fonte de dados externos. O resultado será armazenado em um array Nome. Obtemos os registros de 10 em 10.
ARRAY STRING(30;Nome;20)
SQLStmt:="SELECT ename FROM emp"
SQL EXECUTE(SQLStmt;Nome)
While(Not(SQL End selection))
SQL LOAD RECORD(10)
End while
Neste exemplo, queremos obter as colunas ename e job da tabela emp para um ID especifico ID (cláusula WHERE) da fonte de dados externa. O resultado é armazena nas variáveis 4D vNome e vJob. Só se recupera o primeiro registro.
SQLStmt:="SELECT ename, job FROM emp WHERE id = 3"
SQL EXECUTE(SQLStmt;vNome;vJob)
SQL LOAD RECORD
Neste exemplo, queremos obter a coluna Campo_Blob da tabela Test na fonte de dados. O resultado é armazenado em uma variável BLOB cujo valor é atualizado cada vez que um registro for carregado.
C_BLOB(MeuBlob)
SQL LOGIN
SQL EXECUTE("SELECT Campo_Blob FROM Test";MeuBlob)
While(Not(SQL End selection))
`Buscamos nos resultados
SQL LOAD RECORD
`O valor de MeuBlob é atualizado a cada chamada
You want to retrieve data locally from a remote 4D Server database where it is stored. To do this, you must use intermediary arrays:
// Log in to the remote database
SQL LOGIN("IP:192.168.18.15:19812";"user";"password";*)
If(OK=1)
// Starting from here all SQL requests are made on the remote database
C_TEXT($LastName_value) // 4D variable used in the search statement
ARRAY TEXT($a_LastName;0) // Temporary storage of remote values for LastName
ARRAY TEXT($a_FirstName;0) // Temporary storage of remote values for FirstName
C_BOOLEAN($UseSQL) //Choice of means for local storage of data from the remote database
// (demo only)
$LastName_value:="Smith" // Initialization of 4D variable
// Associate the 4D $LastName_value variable with the first "?" in the SQL request
SQL SET PARAMETER($LastName_value;SQL param in)
// From the remote PERSONS table, retrieve the values of the LastName and FirstName fields
// where "LastName = Smith" and store them in the $a_LastName and $a_FirstName arrays
SQL EXECUTE("SELECT LastName, FirstName FROM PERSONS WHERE LastName = ?";$a_LastName;$a_FirstName)
If(Not(SQL End selection)) // If at least one record is found
SQL LOAD RECORD(SQL all records) // Load all the records
$UseSQL:=True // Chooses the way to integrate the data (demo only)
If($UseSQL) // Use SQL requests
SQL LOGOUT // Log out from the remote database
SQL LOGIN(SQL_INTERNAL;"user";"password") // Log in to the local database
// Starting from here all SQL requests are made on the local database
// Save the $a_LastName and $a_FirstName arrays in the local PERSONS table
SQL EXECUTE("INSERT INTO PERSONS(LastName, FirstName) VALUES (:$a_LastName, :$a_FirstName);")
Else // Using 4D commands
For($i;1;Size of array($a_LastName))
CREATE RECORD([PERSONS])
[PERSONS]LastName:=$a_LastName{$i}
[PERSONS]FirstName:=$a_FirstName{$i}
SAVE RECORD([PERSONS])
End for
End if
End if
SQL LOGOUT // Close the connection
End if
Se o comando for executado corretamente, a variável sistema OK retorna 1, do contrário retorna 0.
Produto: 4D
Tema: SQL
Número
820
Criado por: 4D 2004
Manual de linguagem 4D ( 4D v12.4)
Manual de linguagem 4D ( 4D v11 SQL Release 6)
Manual de linguagem 4D ( 4D v14 R3)
Manual de linguagem 4D ( 4D v14 R2)
Manual de linguagem 4D ( 4D v13.5)
Manual de linguagem 4D ( 4D v14.3)
Manual de linguagem 4D ( 4D v14 R4)