Executar instruções SQL com SQL EXECUTE
Aplicação
SQL EXECUTE utiliza-se em conjunto com diferentes instruções SQL.
Condições
- Código 555343
- Tabela existente
- Nome de tabela adequado
Os nomes das tabelas e das colunas das tabelas devem começar por uma letra e não podem conter operadores aritméticos, p. ex., +. Devido aos comandos SQL ao importar ou exportar dados, estes símbolos podem causar problemas.
Descrição das funções
O comando oferece as seguintes instruções SQL no comando SQL EXECUTE:
Instrução | Função |
---|---|
SELECT | Selecionar dados |
CREATE SYNONYM | Criar um sinónimo (substituir indicações de caminho longas por nomes curtos) |
DROP SYNONYM | Eliminar o sinónimo |
CREATE TABLE | Criar uma tabela |
COPY TABLE | Copiar uma tabela |
RENAME TABLE | Mudar o nome da tabela |
DROP TABLE | Eliminar a tabela |
INSERT | Inserir linhas de tabela |
ANULAR | Atualizar linhas de tabelas |
DELETE | Eliminar linhas da tabela |
ALTER TABLE |
|
RENAME COLUMN | Mudar o nome a colunas da tabela |
SQL EXECUTE com a instrução SQL SELECT
O servidor SQL coloca os dados linha a linha no Result-set (conjunto de resultados). As linhas são numeradas em sequência começando pelo 0. Este número de linha (o INDEX) é utilizado pelos comandos SQL FETCH e UPDATE.
SQL EXECUTE, juntamente com a instrução SQL SELECT, seleciona valores da tabela e transfere-os para o conjunto de resultados, abrindo sempre uma transação. Contrariamente ao comando SQL SQL SELECT, a combinação de SQL EXECUTE com a instrução SELECT possibilita a seleção simultânea de várias colunas e linhas.
Na função SQL ... "SELECT...WHERE...", introduzem-se os critérios de procura. Desta forma, limita-se o número de linhas a transferir, em caso de necessidade. Se não utilizar esta opção, são carregadas todas as linhas da tabela.
Na função SQL ... "SELECT...ORDER BY...", introduz-se o critério de ordenação. A indicação é constituída pela designação das colunas e pela palavra-chave ASC, para a ordenação ascendente, ou DESC, para a ordenação descendente. Se não utilizar esta opção, as linhas são colocadas numa sequência aleatória.
Com a função SQL ... "SELECT...FOR UPDATE", bloqueiam-se as linhas selecionadas para outras aplicações. Outras indicações podem continuar a ler estas linhas, mas não alterá-las. Se proceder a alterações nas entradas da tabela, é imprescindível utilizar esta opção.
Result-set vazio: se não existirem linhas que correspondam ao critério de seleção, o servidor SQL devolve uma HANDLE válida sem entradas de tabela.
Condição | Programação |
---|---|
igual | = == |
diferente | != <> |
menor | < |
menor ou igual | <= |
maior | > |
maior ou igual | >= |
vazio | IS NULL |
não vazio | IS NOT NULL |
Reunir várias condições: | |
Lógico E | AND |
Lógico OU | OR |
Avisos
- Também é possível definir sinónimos para tabelas ainda não criadas.
- A ordem das colunas no ficheiro criado corresponde à ordem dentro da instrução AS SELECT.
- Para as instruções dentro do comando SQL é possível utilizar, igualmente, parâmetros QS simples ou compostos.
- Se verificar o conteúdo de um parâmetro QS na visualização de estado adicional (separador QPARA), verá unicamente os primeiros 30 caracteres e, portanto, não o conteúdo completo.
Exemplo
11 SQL BIND Q881 "Tab_Example.Position_Nr" | |
12 SQL BIND Q882 "Tab_Example.Measure_X" | |
13 SQL BIND Q883 "Tab_Example.Measure_Y" | |
14 SQL BIND Q884 "Tab_Example.Measure_Z" | |
. . . | |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr<20" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr==:’Q11’" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM ’V:\table\Tab_Example’ WHERE Position_Nr<20" |
0 BEGIN PGM SQL_CREATE_TAB MM | |
1 SQL Q10 "CREATE SYNONYM NEW FOR 'TNC:\table\NewTab.TAB'" | ; Criar sinónimo |
2 SQL Q10 "CREATE TABLE NEW AS SELECT X,Y,Z FROM 'TNC:\prototype_for_NewTab.tab'" | ; Criar tabela |
3 END PGM SQL_CREATE_TAB MM |
0 BEGIN PGM SQL_CREATE_TABLE_QS MM | |
1 DECLARE STRING QS1 = "CREATE TABLE " | |
2 DECLARE STRING QS2 = "'TNC:\nc_prog\demo\Doku\NewTab.t' " | |
3 DECLARE STRING QS3 = "AS SELECT " | |
4 DECLARE STRING QS4 = "DL,R,DR,L " | |
5 DECLARE STRING QS5 = "FROM " | |
6 DECLARE STRING QS6 = "'TNC:\table\tool.t'" | |
7 QS7 = QS1 || QS2 || QS3 || QS4 || QS5 || QS6 | |
8 SQL Q1800 QS7 | |
9 END PGM SQL_CREATE_TABLE_QS MM |