Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
QUERY BY SQL
|
QUERY BY SQL ( {tabela ;} sqlFormula ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
tabela | Tabela |
![]() |
Tabela para a qual se devolve a seleção de registros ou tabela padrão se o parâmetro for omitido | |||||
sqlFormula | String |
![]() |
Fórmula válida de pesquisa SQL representando a cláusula WHERE da pesquisa SELECT | |||||
O comando QUERY BY SQL permite aproveitar diretamente o motor SQL integrado de 4D. Este comando pode executar um pedido simples SELECT que pode ser escrito desta forma:
SELECT *
FROM tabela
WHERE <sqlFormula>
tabela é o nome da tabela passada no primeiro parâmetro e sqlFormula a cadeia de pesquisa passada no segundo parâmetro.
Por exemplo, a seguinte instrução:
([Empregados];"nome=’josé’")
SELECT * FROM Empregados WHERE "nome=’josé’"
QUERY BY SQL não utiliza relações entre tabelas definidas no editor de estrutura 4D. Se deseja utilizar os dados relacionados, terá que adicionar um JOIN á pesquisa. Por exemplo, assumindo que temos a seguinte estrutura, com uma relação Muitos-a-Um entre os campos [Pessoas]Cidade e [Cidades]Nome:
[Pessoas]
Nome
Cidade
[Cidades]
Nome
População
QUERY BY FORMULA([Pessoas];[Cidades]População>1000)
QUERY BY SQL([Pessoas];"pessoas.cidade=cidades.nome AND cidades.população>1000")
Este exemplo mostra os escritórios com vendas superiores a 100. A pesquisa SQL é:
SELECT *
FROM Escritorios
WHERE Vendas > 100
C_STRING(30;$formulaPesquisa)
$formulaPesquisa:="Vendas > 100"
QUERY BY SQL([Escritorios];$formulaPesquisa)
Este exemplo mostra as ordens entre 3.000 e 4.000. A pesquisa SQL é:
SELECT *
FROM Ordens
WHERE Quantidade BETWEEN 3000 AND 4000
Utilizando o comando QUERY BY SQL:
C_STRING(40;$formulaPesquisa)
$formulaPesquisa:="Quantidade BETWEEN 3000 AND 4000"
QUERY BY SQL([Ordens];$formulaPesquisa)
Este exemplo mostra como obter o resultado da pesquisa ordenado com um critério específico. A pesquisa SQL é:
SELECT *
FROM Pessoas
WHERE Cidade =’Paris’
ORDER BY Nome
Utilizando o comando QUERY BY SQL:
C_STRING(40;$formulaPesquisa)
$formulaPesquisa:="Cidade= ‘Paris’ ORDER BY Nome"
QUERY BY SQL([Pessoas];$formulaPesquisa)
Este exemplo mostra uma pesquisa utilizando tabelas relacionadas em 4D. Em SQL deve utilizar um JOIN para simular esta relação. Suponha que temos as duas tabelas abaixo:
[Faturas] com os campos (colunas) seguintes:
ID_Fact: Inteiro longo
Data_Fact: Data
Total: Real
[Linhas_Faturas] com as seguintes colunas (campos):
ID_Linea: Inteiro longo
ID_Fact: Inteiro longo
Codigo: Alfa (10)
QUERY BY FORMULA([Linhas_Faturas];([Linhas_Faturas]Codigo="FX-200") & (Month of([Faturas]Data_Fat)=4))
SELECT ID_Linha
FROM Linhas_Faturas, Faturas
WHERE Linhas_Faturas.ID_Fat=Faturas.ID_Fat
AND Linhas_Faturas.Codigo='FX-200'
AND MONTH(Faturas.Data_Fat) = 4
C_STRING(40;$formulaPesquisa)$formulaPesquisa:="Linhas_Faturas.ID_Fat=Faturas.ID_FatAND Linhas_Faturas.Codigo=’FX-200’ AND MONTH(Faturas.Data_Fat)=4"
Se o formato da condição de pesquisa for correto, a variável Sistema OK assume o valor 1. Do contrário, assume o valor 0, e o resultado do comando será uma seleção vazia e um erro é devolvido. Este erro pode ser interceptado por um método instalado utilizando o comando ON ERR CALL.
Produto: 4D
Tema: SQL
Número
942
Criado por: 4D v11 SQL
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)