Interface que permite ao usuário executar consultas e DMLs livremente no banco de dados.
O usuário pode escrever vários comandos em sequencia em uma mesma entrada. Estes comandos serão executados em uma transação e automaticamente comitados no final.
O resultado dos comandos SELECT executados será através de uma tabela.
Para os demais comandos de DML ou DDL, apenas o número de registros processados será informado.
Além dos comandos tradicionais de SQL, DML e DDL, os seguintes comandos são reconhecidos:
- DESC tabela - Apresenta as informações sobre a tabela informada (colunas e tipagem de dados)
- COMMIT - Executa um commit na conexão.
- ROLLBACK - Executa um rollback na conexão.
- SHOW pref, pref, ... - Mostra os valores dos parâmetros de configuração. Caso não informar parâmetros, lista todos os parâmetros.
- CONFIG pref=valor, pref=valor, ... - Permite configurar preferencias
- CONNECT [nome] - Conecta com outra base de dados. Caso não informado, vola a conectar com a base DEFAULT.
- SUM col1 col2 ... - Estabelece uma lista de colunas que deseja que sejam totalizadas no final.
- SERVICE nome-global-serviço - Carrega um serviço para executar funcionalidades dele;
- PARMS nome=valor, nome=valor, ... - Define valores para serem utilizados na execução das funcionalidades de um service a seguir.
- RUN [feature [action]] - Executa uma função do service carregado.
- SELECT - Permite consultar os dados de um SQL (em forma de tabela).
- DISPLAY - Funciona exatamente igual ao SELECT, porém, invés de apresentar o resultado em uma tabela, apresenta os campos um abaixo do outro no formato de um formulário.
- EXPORT - Permite exportar uma consulta SQL para um CSV.
- IF-NOT-FOUND - Executa o comando apenas se o ultimo comando não encontrou registros.
- DML-INSERT - Permite criar um comando de INSERT com os dados de um determinado registro.
- DML-UPDATE - Permite criar um comando de UPDATE com os dados de um determinado registro.
- DML-SAVE - Equivale a um comando DML-UPDATE seguido de um DML-INSERT precedido de um IF-NOT-FOUND. Serve para gerar um script repassando um grupo de dados de uma base para a outra (sem importar se precisa incluir ou alterar).
Todos os DML e DDL registrados são registrados no log de replicação, ou seja, são automaticamente replicados para os outros servidores conectados à base de replicação.
Comandos especiais:
LET
Permite definir uma variável com um valor.
Caso a segunda variável ser um record, cria um novo record com os mesmos atributos.
Ex:
let user = last;
SHOW
Este comando permite consultar as propriedades de configuração do ambiente. Estas propriedades são consultadas diretamente no mapa de configurações. A sintaxe de uso é:
show [chave] [,chave...];
As chaves são formadas pelo nome global da propriedade. Cada chave pode iniciar ou terminar com "*" para visualizar grupos de parâmetros.
Exemplos:
Listar uma determinada propriedade específica:
show RT.UI.CUSTOM_CSS;
Listar todas as customizações de CSS:
show *.CSS;
Listar todas as configurações de uma determinada interface:
show PROJET.CAD_OCORRENCIAS.*
Listar as configurações de DB:
show CONFIG.DB.*;
DML-INSERT e DML-UPDATE
Estes comandos permitem gerar scripts contendo comandos de INSERT ou UPDATE com os mesmos dados que estão atualmente na base.
A sintaxe é a seguinte:
DML-INSERT|DML-UPDATE TABELA [WHERE ...] [ORDER BY ...] [LIMIT] [OFFSET]
Onde:
- TABELA - Nome da tabela a ser utilizada. Esta tabela deverá ter obrigatoriamente uma coluna nome ID e que deve ser chave primária.
- WHERE - Condição de filtro dos registros atuais
- ORDERS BY - Ordenação com a qual deseja gerar os comandos
- LIMIT, OFFSET - Paginação dos registros desejados.
Exemplos:
dml-insert preferencias where preferencia like 'APP.%';
dml-update atividades where id=2878487;
Comando IF-NOT-FOUND
Executa comando apenas se o comando anterior não achou registros
if-not-found comando
Exemplo:
update ... where id=...;
if-not-found insert into ...;
Comando DML-SAVE
Combina os comandos DML-UPDATE, DML-INSERT e IF-NOT-FOUND e permite copiar (alterando ou inserindo) um conjunto de registros de um BD para outro.
Faz um update seguido de um insert que é executado apenas caso não encontrar o registro.
Exemplo: Criar script para atualizar todas as naturezas de operação
dml-save naturezas_operacoes;
Irá gerar várias linhas tipo:
update ... where id=...;
if-not-found insert into ...;
Uso de macros
Dentro de qualquer comando informado, pode-se utilizar variáveis (macros) resultantes de comandos anteriores. Estas variáveis são definidas no seguinte formato ${nome-da-variavel}.
Qualquer comando SELECT executado, define automaticamente a variável "last" com os dados do último registro resultante na query. Desta forma, podemos utilizar o valor de qualquer uma destas colunas através da macro ${last.coluna}.
Exemplo:
select * from usuarios where login = 'admin';
select * from pedidos where usuario_inclusao_id = ${last.id};