Á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>
 cSQL >, <
cBD>
 cBD >, <
@cErro>
 cError >,
< @cSaida>, [ lbIsQuery] ) --> iFunciona Parâmetros/Elementos
 < cOut > )

Parâmetros

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
  • Informix®
  • IBM Universal Database® (DB2)
  • Oracle®
  • SyBase Adaptive Server®
  • Microsoft SQL® ou Microsoft SQL7®

 

 

#INCLUDE 'TOTVS.CH'User Function TestParser()Local tSQL
 := ""
Local
; local 
sErro
cErro := ""
Local
; local 
sSql
cOut := ""; 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 ifconout("FIM")return
Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
MSParse,
 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