Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
...
Pagetitle | ||||
---|---|---|---|---|
|
...
Analisa e converte uma Stored Procedure escrita em SQL ANSI, para um dos bancos de dados relacionais homologados.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
MSParseFull( < cSQL >, < cBD >, < cError >, < cOut > )
|
Parâmetros
Função: MSParseFull
Analisa uma string SQL - Structured Query Language, escrita em MSSQL - Microsoft Structured Query Language, e converte para a sintaxe de um dos bancos de dados relacionais homologados.
MSParseFull ( < cSQL>, < cBD>, < @cErro>, < @cSaida>, [ lbIsQuery] ) --> iFunciona
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cSQL |
...
caractere | Stored Procedure |
...
escrita em |
...
SQL ANSI, que será convertida. | X |
|
cBD |
...
caractere |
...
Nome do SGBD para o qual será convertida |
...
a Stored Procedure. |
...
SGBDs são |
...
aceitos por este parâmetro, consulte a |
...
seção "Observações". | X |
|
...
cError |
...
caractere |
...
Recupera a mensagem de erro, retornada pela função MSParseError(). |
...
| X |
...
|
...
cOut |
...
caractere |
...
Recupera a |
...
Stored Procedure convertida. |
...
ocorra erro |
...
no parser, visando auxiliar na localização do erro |
...
na procedure original, o conteúdo parcial (até onde o parser ocorreu com sucesso) será atribuído a variável. | X |
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
iRet | numérico | Retorna 1 (um), se a conversão ocorreu com sucesso |
...
...
; caso contrário, 0 (zero), |
...
indicando erro na conversão. |
Observações
Os bancos de dados relacionais aceitos
...
no segundo parâmetro (cBD)
...
são:
- INFORMIX
- DB2
- ORACLE
- MSSQL
- MYSQL
- POSTGRES ou POSTGRESQL
Exemplos
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
user function test()
local cSQL := ""; local cErro
#INCLUDE 'TOTVS.CH' User Function TestParser() Local tSQL := "" Local sErro ; local cOut := "" Local sSql ; local cRet := "" tSQL 0" cSQL += "create proc sp_Teste (@dtInicial char(10), @dtFinal char(18), @ben_id char(6)) " + chr(13) tSQL cSQL += "as " + chr(13) tSQL cSQL += "declare " + chr(13) tSQL cSQL += "@id @id integer = 1, " + chr(13) tSQL cSQL += " @din money, " + chr(13) tSQL cSQL += " @hoje date " + chr(13) tSQL cSQL += "begin " + chr(13) tSQL cSQL += " select distinct " + chr(13) tSQL cSQL += " j.nav_n2 navio, " + chr(13) tSQL cSQL += " isnull(g.proc_nome,'NAO DEVOLVIDO') local_dev, " + chr(13) tSQL cSQL += " dateadd(hour, 2, b.data_saida) " + chr(13) tSQL cSQL += " from tabela1 a, " + chr(13) tSQL cSQL += " tabela2 b " + chr(13) tSQL cSQL += " where a.dt_entrada between convert(datetime,@dtInicial,103) and convert(datetime,@dtFinal,103) " + chr(13) tSQL cSQL += " and a.cliente = b.cliente " + chr(13) tSQL cSQL += "end " + chr(13) tSQL cSQL += "go " saida cRet := msparsefull(tSQL cSQL, "INFORMIX",sErro cErro,sSql) //saida := msparsefull(tSQL,"ORACLE",sErro,sSql) //saida := msparsefull(tSQL,"MSSQL",sErro,sSQL) //saida := msparsefull(tSQL,"DB2",sErro,sSQL) //saida := msparsefull(tSQL,"SYBASE",sErro,sSQL) conout("Funciona: ") conout(saida) conout("Erro encontrado: ") conout(sErro) if (saida = '0') alert("Saida:"+sSql) else conout("Saida:") conout(sSql) end if conout("FIM") return Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server cOut)
conout("Resultado: " + IIF(cRet == "1", "Sucesso", "Falha") + chr(10) + "Erro encontrado(?): " + cErro)
if (cRet == '1')
msgInfo("Resultado: Sucesso!" + chr(10) + "String SQL Convertida:" + cOut)
else
msgInfo("Resultado: Falha!" + chr(10) + "Error: " + cErro + chr(10) + "Parcial: " + cOut)
end if
return
|