Página 1 de 1

Sql no meio do código xBase

Enviado: 24 Fev 2014 15:15
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.

Sql no meio do código xBase

Enviado: 24 Fev 2014 16:18
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

Sql no meio do código xBase

Enviado: 24 Fev 2014 17:50
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).

Sql no meio do código xBase

Enviado: 25 Fev 2014 11:21
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.