Árvore de páginas

Bloco de código de livre desenvolvimento SQL que permite desenvolvimento sem nenhum tipo de pre-processamento da linguagem (exceto variaveis pre-definidas), onde nenhuma sintaxe é consistida.

A vantagem do uso de SQL BLOCKS é que o SQL entre o bloco SQL<< código >>END SQL não tem a sintaxe validada durante a compilação do fonte.

Isto é muito útil quando existem determinadas sintaxes não previstas pelo compilador por se tratar de um SQL que é reconhecido como um SQL válido na execução do banco de dados em uso, mas não tem uma sintaxe comum válida para o compilador.

A principal vantagem é que com isso deixa-se de utilizar SQL preparado (PREPARE / EXECUTE) que de certa forma onera a performance da aplicação.


Variáveis são precedidas por $ e nome das tabelas temporárias por $$.

Aceita também DECLARE CURSOR.

Variáveis só são aceitas na entrada de valores (Ex. SQL Select * From tabela Where campo1=$numero END SQL, SQL Select * INTO $regs.* From usuarios).

Observações

  • Função disponível a partir da build 7.00.131227A.

Debug

Ao realizar o o debug do fonte com SQLBLOCK, não é possível debugar as linhas do código dentro do bloco devido a forma em que ele é processado, e ele para APÓS a execução de todo o código do bloco.


Exemplos

Exemplo 1
 define l_codigo char(2)
main
   define l_den char(20)
   let l_codigo = '01'
   WHENEVER ERROR CONTINUE
   DATABASE logix
   sql
     CREATE TEMP TABLE teste_temp (coluna serial)
   END sql
   sql
     SELECT UNIQUE 1
       FROM empresa, OUTER usuario_empresa
      WHERE empresa.cod_empresa = '01'
        AND usuario_empresa.cod_empresa = empresa.cod_empresa
   END sql
   declare cq_empresa cursor for
   sql
    select FIRST 3 den_empresa, den_reduz into $l_den from empresa where cod_empresa >= $   l_codigo
   END sql
   display 'inicio'
   foreach cq_empresa
      IF sqlca.sqlcode <> 0 THEN
         EXIT FOREACH
      END IF
      display 'foreach... = ',l_den
   end foreach
   display 'fim...'
end main



  • Sem rótulos