Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/327912/newLayout.css

...

Pagetitle
MSParseFull
MSParseFull

...

Analisa e converte uma Stored Procedure escrita em SQL ANSI, para um dos bancos de dados relacionais homologados.

Sintaxe

Bloco de código
collapsefalse
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.
Para saber quais

...

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().

...


Caso seu conteúdo seja uma string vazia (""), nenhum erro foi retornado.

X

...

 

...

cOut

...

caractere

...

Recupera a

...

Stored Procedure convertida.
Caso

...

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
languagecpp
themeEclipse
linenumberstrue
collapsefalse
user function test()

  local cSQL := ""; local cErro
  • Informix®
  • IBM Universal Database® (DB2)
  • Oracle®
  • SyBase Adaptive Server®
  • Microsoft SQL® ou Microsoft SQL7®

 

 

#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

Veja também