Sql no meio do código xBase

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
cruz_brasil
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 12 Mar 2010 17:17
Localização: Coimbra - Portugal

Sql no meio do código xBase

Mensagem por cruz_brasil »

Salve gente,

Tenho me incomodado em ter de escrever todo o código SQL colar entre aspas e depois mandar a string para uma função que executa no servidor e retorna o resultado em uma array,
venho tentando imaginar um modo de fazer que nem no PHP onde vc esta programando em HTML e quando vai começar um código em PHP descrimina com <% ... PHP ... %>.

Alguem teria alguma idéia de como poderia se fazer isso ?
Ex.

Código: Selecionar todos

FUNCTION TMP()

FOR mI:=1 TO nFILIAIS

   nVAL:=FUNCAO(PAR1,PAR2)
   ...

   <%
      select coluna,coluna,coluna from tabela where coisa and tal
      ... 
      create or replace function etc e tal...
      ...
   %>

   cRET:-OUTRA_FUNC(PAR,PAR,PAR)

NEXT
RETURN(.T.)

Abraço.
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Sql no meio do código xBase

Mensagem por bencz »

Bm, e se for como a propria linguagem xBase ?

Código: Selecionar todos

   local oError := nil
   local cConnString := "PGS=localhost;UID=USUARIO;PWD=SENHA;DTB=BANCODEDADOS"

   SR_SETBASELANG(2) // muda o idioma para portugues

   ::nCnn := SR_AddConnection(CONNECT_POSTGRES, cConnString )
         
   if ::nCnn < 0
      hwg_Msgstop("Erro ao se conectar com o banco de dados")
      quit
   endif

#ifdef TESTE
   // teste
   aStruct := {{"EMPNO","N",10,0 },;
              {"EMPNAME","C",50,0},;
              {"SALARY","N",6,2}}   
   USE "EMP" EXCLUSIVE VIA ::cRDD
   For i = 1 to 100
      Append Blank
      Replace EMPNO      with i
      Replace EMPNAME    with "aaaa"
      Replace SALARY     with 10.5
   Next
#endif
Isso é possivel com o SqlRDD do xHB.com
Imagem
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Sql no meio do código xBase

Mensagem por alxsts »

Olá!

Em qualquer linguagem de programação, misturar código fonte da linguagem com código SQL nunca foi uma boa ideia. Principalmente em código HTML, pois facilita SQL injection.

O ideal é aproveitar a capacidade dos SGBDs de armazenar procedimentos e criar diversas stored procedures com o teu código SQL. Depois, no código xBase, crie uma classe ou função que recebe os parâmetros e executa as stored procedures. Este é o conceito de programação em n camadas (n tier).
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
cruz_brasil
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 12 Mar 2010 17:17
Localização: Coimbra - Portugal

Sql no meio do código xBase

Mensagem por cruz_brasil »

Olá Bencz, Alxsts,

O exemplo do bencz é exatamente o que eu estou tentando capar fora do nosso sistema, gostaria de usar todo o potencial do banco como o alxsts falou.

Eu tenho feito muitas PL/SQL, mas mesmo assim isto precisa ser executado para gravar no banco e é ai que eu escrevo toda a PL em um sql admin, testo e depois colo tudo no xBase e tenho de colocar todas as aspas para mandar para uma classe q executa toda a string no banco.
Ai quando preciso dar manutenção nessa PL/SQL, tenho de copiar tudo do meu .prg, remover todas as aspas, fazer a manutenção, colcar no .prg denovo e adicionar tooooodas as aspas denovo...

por isso estava pensando em algo como no PHP que vc define entre dois identificadores que o codigo ali dentro deve ser interpretado de outra forma. ou que aquele codigo ali dentro se transfomer em uma string para depois poder mandar ele para a classe q vai executar no banco.



abraços.
Responder