Árvore de páginas

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

Sintaxe

MSParseFull( < cSQL >, < cBD >, < cError >, < 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

user function test()

  local cSQL := ""; local cErro := ""; local cOut := ""; local cRet := "0"

  cSQL += "create proc sp_Teste (@dtInicial char(10), @dtFinal char(18), @ben_id char(6)) " + chr(13)
  cSQL += "as " + chr(13)
  cSQL += "declare " + chr(13)
  cSQL += " @id   integer = 1, " + chr(13)
  cSQL += " @din  money, " + chr(13)
  cSQL += " @hoje date " + chr(13)
  cSQL += "begin " + chr(13)
  cSQL += "    select distinct " + chr(13)
  cSQL += "           j.nav_n2 navio, " + chr(13)
  cSQL += "           isnull(g.proc_nome,'NAO DEVOLVIDO') local_dev, " + chr(13)
  cSQL += "     dateadd(hour, 2, b.data_saida) " + chr(13)
  cSQL += "    from   tabela1 a, " + chr(13)
  cSQL += "           tabela2 b " + chr(13)
  cSQL += "    where a.dt_entrada between convert(datetime,@dtInicial,103) and convert(datetime,@dtFinal,103) " + chr(13)
  cSQL += "    and a.cliente = b.cliente " + chr(13)
  cSQL += "end " + chr(13)
  cSQL += "go "

  cRet := msparsefull(cSQL, "INFORMIX", cErro, 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


  • Sem rótulos