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
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