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

As setas pretas e a respetiva sintaxe mostram processo internos de SQL EXECUTE. As setas cinzentas e a respetiva sintaxe não dizem imediatamente respeito ao comando SQL EXECUTE.

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

  • Inserir linhas da tabela com ADD
  • Eliminar linhas da tabela com DROP

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ções da indicação WHERE

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.
  • ; Encadear valores alfanuméricos

  • 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.
  • Separador QPARA

Exemplo

Exemplo: selecionar linhas da tabela

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"

Exemplo: selecionar as linhas da tabela com a função WHERE

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr<20"

Exemplo: selecionar as linhas da tabela com a função WHERE e o parâmetro Q

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr==:’Q11’"

Exemplo: definir o nome da tabela por indicação absoluta do caminho

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