Á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

...

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.

Sintaxe

Bloco de código
collapsefalse
MSParseFull( <
cSQL>
 cSQL >, <
cBD>
 cBD >, <
@cErro>
 cError >, <
@cSaida>
 cOut >, [
lbIsQuery
 lIsQuery ] )
--> iFunciona

Parâmetros

...

 

Nome

Tipo

Descrição

Obrigatório

Referência

cSQL

...

caractere

...

String SQL, escrita em MSSQL, que será convertida.

X

 

cBD

...

caractere

...

Nome do SGBD para o qual será convertida a string SQL.
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 string SQL convertida.
Caso

...

ocorra erro

...

no parser, visando auxiliar na localização do erro

...

na string SQL original, o conteúdo parcial (até onde o parser ocorreu com sucesso) será atribuído a variável.

X

...

 

...

lIsQuery

...

lógico

...

Se verdadeiro (.T.), indica que é uma query simples (

...

Select, por exemplo); caso contrário,

...

Falso (.F.),

...

será uma Procedure.

 

 

 

...

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®
  • Postgres ou PostgreSQL

 

 

#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