A ferramenta plus do processador de linha de comando, CLPPlus, fornece recursos essenciais para migrar para o DB2 a partir do Oracle e também para usuários do DB2 e do Informix. Usando o CLPPlus, os usuários migrando para o DB2 podem executar scripts SQL existentes com relação ao DB2 para Linux®, UNIX® e Windows® com pouca ou nenhuma modificação. Usuários existentes do DB2 também podem tirar vantagem de alguns dos novos recursos e benefícios do CLPPlus que permitem aos DBAs executar muitas tarefas comuns rápida e eficientemente. O CLPPlus é uma ferramenta simples e útil para que os usuários criem relatórios formatados ou gerenciem scripts PL/SQL ou SQL de uma maneira familiar. Além disso, suas facilidades sofisticadas do editor de comandos o tornam uma ferramenta fácil de usar para desenvolver e depurar blocos PL/SQL.
Como parte dos aprimoramentos de compatibilidade com SQL no IBM DB2 9.7 para Linux, UNIX e Windows, uma série de recursos de compatibilidade permite que os usuários executem aplicativos Oracle no ambiente DB2. Parte desta entrega foi um utilitário interativo de linha de comandos, o CLPPlus. O CLPPlus é uma ferramenta de linha de comando unificada para todos os servidores de dados IBM, incluindo o DB2 para Linux, UNIX e Windows, DB2 para z/OS® e Informix. Juntamente com seu suporte para comandos SQL e do servidor nativo, o CLPPlus evoluiu ao longo do tempo, preenchendo a lacuna de compatibilidade com SQL que os clientes em migração encontravam e relatavam para nos ajudar a amadurecer o CLPPlus. Agora, o CLPPlus é capaz de tratar os scripts de SQL em migração com suporte abrangente a recursos de compatibilidade do SQL, incluindo:
- Dialeto PL/SQL
- Formatação de relatório
- Script
AUTOTRACE- Utilitário SQL Buffer
- Envio para spool
As seções a seguir fornecem uma visão geral de cada um desses recursos com exemplos.
O CLPPlus oferece várias opções que podem ser especificadas ao chamá-lo a partir da linha de comando. Isso inclui ativar o modo silencioso, conectar usando um arquivo de configuração e executar scripts SQL. Essas opções fornecem a flexibilidade de chamar o CLPPlus para atender às suas necessidades.
Scripts SQL podem ser executados durante a inicialização do CLPPlus usando o comando
@, que é útil para executar trabalhos de rotina em lote quando o
CLPPlus é iniciado.
Iniciar o CLPPlus com -s[ilent] suprime certas mensagens, como informações de versão, informações sobre copyright, mensagens de prompt e informações de conexão, de serem exibidas no console. Essas opções podem ser usadas em combinações.
Chame o CLPPlus em modo silencioso executando o arquivo
demo.sql usando @:
clpplus -silent @C:\demo.sql.
Uma cadeia de caractere de conexões pode ser especificada durante a chamada do CLPPlus para estabelecer a conexão com o banco de dados na sessão do CLPPlus, como mostrado no exemplo abaixo. O CLPPlus pode até mesmo ser especificado para detectar as informações de conexão a partir do arquivo de configuração fornecendo o nome dsn_alias durante a chamada. O exemplo abaixo mostra como chamar o CLPPlus com uma cadeia de caractere de conexão de banco de dados.
Lista 1. Chamada do CLPPlus com informações de conexão
C:\>clpplus -nw manshanb/temp4now@localhost:500000.testdb CLPPlus: Version 1.4 Copyright >c< 2009, IBM CORPORATION. All rights reserved. Database Connection Information: Hostname = localhost Database server = DB2/NT SQL09074 SQL authorizaiton ID = manshanb Local database alias = TESTDB Port = 50000 SQL> |
Iniciar o CLPPlus em modo detalhado (-verbose)
possibilita a impressão de mensagens adicionais na sessão do
CLPPlus, que são suprimidas no modo normal. Isso fornecerá informações adicionais ao usuário, o que é especialmente útil no caso de falha de qualquer execução de comando no CLPPlus.
O redirecionamento de entrada e saída é suportado no CLPPlus, em que um usuário pode redirecionar um arquivo para a sessão do CLPPlus para fornecer valores de entrada, o que é útil ao executar scripts SQL sem intervenção manual quando o script exige que valores de entrada sejam fornecidos durante o tempo de execução. Os usuários podem até mesmo redirecionar a saída do CLPPlus para um arquivo usando o redirecionamento de saída no CLPPlus. O exemplo abaixo mostra o uso do redirecionamento no CLPPlus. O arquivo input.txt é passado para a sessão do CLPPlus, que contém o valor de entrada exigido pelo script demo.sql.
Lista 2. Redirecionamento de entrada no CLPPlus
C:\>clpplus @c:\demo.sql <c:\input.txt CLPPlus: Version 1.4 Copyright >c< 2009, IBM CORPORATION. All rights reserved. Database Connection Information: Hostname = localhost Database server = DB2/NT SQL09074 SQL authorization ID = manshanb Local database alias = SAMPLE Port = 50000 Enter a value for variable 1: Original statement: select * from employee where firstnme='&1' New statement with substitutions: select * from employee where firstnme='MICHAEL' FIRSTNME SALARY -------------------------- --------------------------- MICHAEL 10000.0 C:\> |
O CLPPlus também fornece uma facilidade para executar scripts de usuário automaticamente em cada login do
CLPPlus. Isso pode ser obtido de duas formas: configurando o nome do arquivo do script com caminho como valor para a variável de ambiente
CLPPLUS_USER_STARTUP_SCRIPT ou tendo um arquivo de script com o nome
.clpplusrc no diretório inicial do sistema operacional. Isto é útil ao executar um conjunto de comandos na inicialização em cada chamada do CLPPlus.
Suporte para dialetos do PL/SQL
O CLPPlus suporta a execução de todos os tipos de instruções PL/SQL suportados pelo servidor
DB2 for LUW. Instruções como create e drop package, procedure,
function, trigger etc. podem ser executadas, sem erros, no CLPPlus.
Instruções de bloco do PL/SQL, como DECLARE, BEGIN, END podem ser executadas no
CLPPlus como blocos anônimos. O exemplo a seguir mostra a execução de um bloco
PL/SQL simples no CLPPlus.
Lista 3. Execução de bloco do PL/SQL
SQL> set serveroutput on
SQL> begin
2 dbms_output.put_line('plsql demo');
3 end;
4 /
plsql demo
DB250000I: The command completed successfully.
|
Blocos anônimos também podem ser executados usando o comando execute no CLPPlus.
O comando execute é usado principalmente para a execução de instruções
PL/SQL de uma linha, como mostra o exemplo abaixo. Esse comando facilita a execução de instruções
PL/SQL de uma linha evitando a necessidade de colocá-los dentro de um bloco
BEGIN-END. No exemplo abaixo, a variável
var1 recebe a atribuição de um comando varchar usando exec.
Lista 4. Execução de PL/SQL de uma linha
SQL> variable var1 varchar DB250000I: The command completed successfully. SQL> exec :var1:='manshanb'; DB250000I: The command completed successfully. |
Procedimentos PL/SQL podem ser executados no CLPPlus usando o comando CALL. O comando exec também pode ser usado para executar procedimentos, como mostra o exemplo abaixo.
Lista 5. Execução de PL/SQL usando os comandos
call e exec
SQL> call dbms_output.put_line('plsql demo');
plsql demo
DB250000I: The command completed successfully.
SQL> exec dbms_output.put_line('plsql demo');
plsql demo
DB250000I: The command completed successfully.
|
O CLPPlus suporta a impressão do conteúdo do buffer de mensagem DBMS_OUTPUT para o console do
CLPPlus usando a facilidade de saída do servidor. Um usuário pode ativar essa facilidade usando o comando
set, como mostrado no exemplo abaixo. Isso pode ser útil ao depurar blocos ou procedimentos do
PL/SQL buscando mensagens de saída do servidor inseridas em blocos
PL/SQL usando a instrução DBMS_OUTPUT.PUT_LINE().
Lista 6. Saída do servidor dentro do bloco PL/SQL
SQL> set serveroutput on
SQL> Begin
2 For i In 1..10 Loop
3 Dbms_Output.Put_Line('Count '||i);
4 End Loop;
5 End;
6 /
Count 1
Count 2
Count 3
Count 4
Count 5
Count 6
Count 7
Count 8
Count 9
Count 10
DB250000I: The command completed successfully.
|
O CLPPlus suporta uma série de recursos de formatação de relatórios, como o comando de coluna, comando de definição, título da página, título do relatório, quebra e cálculo, que fornecem a facilidades avançadas de geração e formatação de relatórios para o usuário. Os usuários podem usar essas opções para personalizar o relatório conforme as necessidades do negócio. Nesta seção, exploraremos recursos importantes suportados pelo CLPPlus.
column fornece várias opções que podem ser usadas para configurar uma coluna específica no relatório. column é definido em um nome de coluna que pode ser configurado. As opções ON e OFF podem ser usadas para controlar a ativação do comando column. ? column fornece detalhes sobre todas as opções suportadas pelo comando column.
A opção format é usada para formatar os valores de coluna dos tipos
numeric e
varchar. Para formatar a largura de uma sequência de caracteres, use um número inteiro após o A. Valores de cadeias de caractere que excedem a largura especificada são quebrados ou truncados, com base na opção
TRUNCATED ou WRAPPED especificada no comando column. Valores numéricos podem ser formatados com uma sequência de caractere de formato, como mostrado no exemplo. A opção justify pode ser usada para alinhar os valores da coluna à direita, no centro ou à esquerda.
O exemplo abaixo mostra o uso dessas opções de coluna com a tabela de funcionários.
Lista 7. Opções de formatação de coluna
SQL>column salary format 99999.99
SQL>column lastname format A6
SQL>firstnme, lastname, salary from employee ;
FIRSTNME LASTNA SALARY
------------ ------ -----------
CHRISTINE HAAS ########
MICHAEL THOMPS 94250.00
ON
SALLY KWAN 98250.00
JOHN GEYER 80175.00
IRVING STERN 72250.00
EVA PULASK 96170.00
I
EILEEN HENDER 89750.00
SON
THEODORE SPENSE 86150.00
R
VINCENZO LUCCHE 66500.00
SSI
SEAN O'CONN 49250.00
ELL
|
Algumas das outras opções de coluna úteis ao formatar relatórios são dadas abaixo. O cabeçalho de uma coluna pode ser alterado com a opção HEADING especificando o texto do cabeçalho.
A opção PRINT | NOPRINT pode ser usada para controlar a impressão de uma coluna específica. Valores NULL em uma coluna podem ser substituídos por texto definido pelo usuário usando a opção
NULL TEXT. FOLD_BEFORE e FOLD_AFTER
podem ser usados para fornecer uma nova linha, antes ou depois de imprimir os valores da coluna.
O exemplo a seguir demonstra o uso da opção HEADING ao alterar o cabeçalho de uma coluna na exibição do resultado da tabela. No exemplo, a opção FORMAT é usada para formar varchar e colunas decimais, ENAME e SAL
respectivamente.
Lista 8. Opções de formatação de coluna
SQL> COLUMN ENAME HEADING EMP_NAME FORMAT A7 WRAP SQL> COLUMN SAL FORMAT $9999.99 SQL> select ename, deptno, sal from emptable; EMP_NAM DEPTNO SAL ------- ----------- ----------- SMITH 20 $800.00 ALLEN 30 $1600.00 WARD 30 $1250.00 JONES 20 $2975.00 MARTIN 30 $1250.00 BLAKE 30 ######## CLARK 10 $2450.00 SCOTT 20 $3000.00 KING 10 $5000.00 MANGESH 30 $1500.00 SHA |
As variáveis OLD_VALUE e NEW_VALUE são usadas para reter os valores antigo e novo de uma coluna em qualquer momento durante a geração do relatório. Esses valores são usados principalmente com títulos de página. A opção LIKE
permite copiar o formato e os atributos de exibição entre duas colunas.
O CLPPlus suporta a impressão de títulos de página e relatório, que são úteis na geração de relatórios. ttitle e BTITLE são usados para ativar os títulos superior e inferior da página, respectivamente. Da mesma forma, REPHEADER e REPFOOTER
são usados para ativar a impressão de texto de cabeçalho e rodapé em relatórios.
Os textos de título podem ser alinhados à esquerda, à direita e no centro da página, com base na necessidade do cliente. Títulos de página também podem ser configurados para exibir números de páginas nos relatórios usando a opção
PGNO.
Os valores de variável de coluna new_value e old_value podem ser exibidos como parte do texto TTITLE e btitle, respectivamente.
O valor SKIP n é usado para pular o número de linhas
n depois da exibição do título. O exemplo abaixo mostra o uso de títulos de página.
Lista 9. Títulos de página
SQL> ttitle right 'Employee Data'
SQL> btitle center 'IBM Corporation'
SQL> select empno, firstnme, lastname, edlevel, salary, bonus from emp ;
SQL> set linesize 70
Employee Data
EMPNO FIRSTNME LASTNAME EDLEVEL SALARY BONUS
------ ------------ --------------- ------- ----------- -----------
000010 CHRISTINE HAAS 18 152750.00 1000.00
000020 MICHAEL THOMPSON 18 94250.00 800.00
000030 SALLY KWAN 20 98250.00 800.00
000050 JOHN GEYER 16 80175.00 800.00
000060 IRVING STERN 16 72250.00 500.00
000070 EVA PULASKI 16 96170.00 700.00
000090 EILEEN HENDERSON 16 89750.00 600.00
000100 THEODORE SPENSER 14 86150.00 500.00
000110 VINCENZO LUCCHESSI 19 66500.00 900.00
000120 SEAN O'CONNELL 14 49250.00 600.00
000130 DELORES QUINTANA 16 73800.00 500.00
IBM Corporation
Employee Data
EMPNO FIRSTNME LASTNAME EDLEVEL SALARY BONUS
------ ------------ --------------- ------- ----------- -----------
000210 WILLIAM JONES 17 68270.00 400.00
000220 JENNIFER LUTZ 18 49840.00 600.00
000230 JAMES JEFFERSON 14 42180.00 400.00
000240 SALVATORE MARINO 17 48760.00 600.00
000250 DANIEL SMITH 15 49180.00 400.00
000260 SYBIL JOHNSON 16 47250.00 300.00
000270 MARIA PEREZ 15 37380.00 500.00
000280 ETHEL SCHNEIDER 17 36250.00 500.00
000290 JOHN PARKER 12 35340.00 300.00
000300 PHILIP SMITH 14 37750.00 400.00
000310 MAUDE SETRIGHT 12 35900.00 300.00
IBM Corporation
|
Os dois comandos importantes usados para a geração de relatórios são BREAK e
COMPUTE. Esses comandos são usados em conjunto durante a geração de relatórios para formatar o relatório com base nos valores de colunas. Seu uso permite que os relatórios sejam detalhados em vários conjuntos de registros relacionados, tornando o relatório mais legível e organizado.
O comando BREAK pode ser usado para detalhar o relatório em um conjunto de registros com base em um valor de coluna específica. COMPUTE pode ser usado para realizar alguns cálculos naquele conjunto de registros. O exemplo a seguir mostra o uso desses comandos no CLPPlus.
Lista 10.
Comandos BREAK e COMPUTE
SQL> BREAK ON EDLEVEL SKIP 2
SQL> COMPUTE MAX LABEL MAX_SAL of SALARY on EDLEVEL
SQL> SELECT EDLEVEL, EMPNO, FIRSTNME, SALARY FROM EMPLOYEE ORDER BY EDLEVEL;
EDLEVEL EMPNO FIRSTNME SALARY
------- ------ ------------ -----------
12 000290 JOHN 35340.00
12 000310 MAUDE 35900.00
12 200310 MICHELLE 35900.00
******* -----------
MAX_SAL 35900.00
14 000100 THEODORE 86150.00
14 000120 SEAN 49250.00
14 000230 JAMES 42180.00
14 200120 GREG 39250.00
14 200330 HELENA 35370.00
******* -----------
MAX_SAL 86150.00
...
...
|
Para obter mais informações sobre os recursos de formatação de relatórios do CLPPlus, consulte o artigo "Geração de relatórios formatados para servidores de dados IBM usando o CLPPlus."
Recursos como variáveis de ligação, variáveis de substituição, WHENEVER SQLERROR,
WHENEVER OSERROR etc. juntos constituem o suporte a script no
CLPPlus. Podemos usar esses recursos ao desenvolver scripts SQL e, portanto, usar, sem erros, variáveis entre cliente e servidores para controlar o fluxo da execução do script
com base na ação especificada para as ocorrências de erros de SQL
e do SO. Variáveis de ambiente também podem ser acessadas dentro de scripts do CLPPlus
da mesma forma entre sistemas operacionais. Nesta seção, veremos alguns destes recursos suportados pelo CLPPlus.
O suporte a variáveis de ligação é um recurso único no CLPPlus. Uma variável é declarada no cliente do
CLPPlus e pode ser usada como variável de servidor em blocos SQL
e PL/SQL. O comandoexec pode ser usado para inicializar a variável com um valor. Ela também pode ser inicializada envolvendo-a em um bloco Begin-End
. O CLPPlus suporta variáveis de vários tipos de dados, incluindo inteiro, decimal,
varchar, varchar2, número, boleano, linha, array de linhas,
cursor etc. Sua capacidade de ser usada, sem erros, entre cliente e servidor significa que você pode usar a mesma variável em várias execuções. O comando PRINT pode ser usado para exibir o valor da variável no
CLPPlus.
Lista 11. Variáveis de ligação
SQL> variable var1 varchar2 DB250000I: The command completed successfully. SQL> variable var2 number DB250000I: The command completed successfully. SQL> exec :var1:='manshanb' ; DB250000I: The command completed successfully. SQL> begin 2 :var2:=15500.50; 3 end; 4 / DB250000I: The command completed successfully. SQL> print var1 'manshanb' SQL> print var2 15500.50 SQL> select firstnme from employee where salary=:var2 ; FIRSTNME --------------- Michael |
Variáveis são eficientes em chamadas de procedimento, em que é possível capturar os valores dos parâmetros OUT em uma variável e passar a variável como um valor de parâmetro
INPUT para uma chamada de procedimento, como mostrado no exemplo abaixo. Os parâmetros INOUT nas chamadas de procedimento podem ser manipulados usando uma única variável que se comportará como
IN e OUT.
Lista 12. Variáveis de ligação em chamadas de procedimento
SQL> CREATE OR REPLACE PROCEDURE TESTPROC ( IN P1 INTEGER, INOUT P2 INTEGER, - OUT P3 VARCHAR2(20)) 2 BEGIN 3 SET P2 = P1+P2 ; 4 SET P3 = 'Result is ' || P2; 5 END ; 6 / DB250000I: The command completed successfully. SQL> var p1 integer DB250000I: The command completed successfully. SQL> var p2 integer DB250000I: The command completed successfully. SQL> var p3 varchar2 DB250000I: The command completed successfully. SQL> exec :p1:=100; DB250000I: The command completed successfully. SQL> exec :p2:=50; DB250000I: The command completed successfully. SQL> call testproc(:p1, :p2, :p3); DB250000I: The command completed successfully. SQL> print p1 100 SQL> print p2 150 SQL> print p3 'Result is 150' |
Diferentemente de variáveis de ligação, uma variável de substituição é processada no lado do cliente e seu valor será substituído antes de enviar o comando para execução. Ela pode ser usada como marcador para armazenar os valores de cadeia de caractere, que podem ser usados posteriormente até que a sessão esteja em execução. Variáveis de substituição podem ser definidas usando o comando
define e são acessadas usando o caractere e comercial
(&) seguido do nome da variável. O exemplo abaixo mostra o uso das variáveis de substituição no CLPPlus.
Lista 13. Demonstração de variável de substituição
SQL> define name='MICHAEL' SQL> select firstnme, salary from employee where firstnme='&name'; Original statement:select firstnme, salary from employee where firstnme='&name' New statement with substitutions:select firstnme, salary from employee where firstnme='MICHAEL' FIRSTNME SALARY --------------- ------------ MICHAEL 10000 |
Se uma variável acessada não for definida, o CLPPlus solicita o valor daquela variável, como mostrado abaixo.
Lista 14. Demonstração de variável de substituição
SQL> select firstnme, salary from employee where salary > &sal; Enter a value for variable sal: 15000 Original statement:select firstnme, salary from employee where salary > &sal New statement with substitutions:select firstnme, salary from employee where salary > 15000 FIRSTNME SALARY -------------------- ----------------------- MANSHANB 15500 JOE 25000 |
Os usuários também podem aceitar um valor para uma variável durante o tempo de execução usando o comando
ACCEPT
como mostrado no exemplo abaixo. Isso é útil ao solicitar um valor para uma variável que precisa de entrada do usuário durante a execução dinâmica do script.
Lista 15.
ACCEPTSQL> accept USER_ID Enter a value for variable USER_ID: manshanb SQL> define DEFINE USER_ID = manshanb |
O CLPPlus também suporta a passagem de variáveis de ambiente ou de shell como argumentos para os scripts durante a chamada do CLPPlus, que, a seguir, são convertidas em variáveis de substituição nomeadas de acordo com suas posições, que podem ser acessadas usando o caractere e comercial (&) seguido de sua posição. Da mesma forma, mesmo valores podem ser passados como argumentos para os scripts. O exemplo abaixo demonstra esse recurso.
Lista 16. Variáveis shell como variáveis de substituição
C:\>Set DEPT=E32 C:\>clpplus -s @c:\demo.sql %DEPT% 10000 Original statement:select firstnme, salary from employee where edlevel='&1' and salary > &2 New statement with substitutions:select firstnme, salary from employee where edlevel='E32' and salary > 10000 FIRSTNME SALARY --------------- --------------- MICHAEL 15500 JOE 11100 manshanb 20000 |
demo.sql contém a seguinte instrução SQL:
select firstnme, salary from employee where edlevel='&1' and salary > &2 ; |
A variável de ambiente DEPT e o valor
10000 foram passados como argumentos para o
script demo.sql, que consome esses argumentos na forma de variáveis de substituição.
Erros ocorridos durante a execução de scripts no CLPPlus podem ser capturados e uma ação específica pode ser realizada usando os comandos suportados WHENEVER
SQLERROR e WHENEVER
OSERROR . Usando esses comandos, podemos controlar o comportamento do
CLPPlus especificando as ações a serem realizadas, como EXIT ou CONTINUE sempre que ocorrer um erro. Também podemos escolher confirmar ou reverter as transações não confirmadas durante erros de
SQL ou de SO usando a opção COMMIT ou ROLLBACK. No caso de
EXIT, podemos retornar o código de retorno dependente do sistema operacional com base no cenário de erro.
O exemplo a seguir mostra o comportamento do comando WHENEVER SQLERROR
CONTINUE. Aqui, ao ocorrer um erro, o prompt do CLPPlus é retornado e continua a aguardar por entrada do usuário.
Lista 17.
WHENEVER SQLERRORSQL> whenever sqlerror continue SQL> select * from nonexistingtable; SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name. SQL> |
Também podemos confirmar, reverter ou não tomar nenhuma ação sempre que um erro de SQL ocorrer.
Lista 18.
Tipos de ação de WHENEVER SQLERROR SQL> whenever sqlerror continue commit SQL> whenever sqlerror continue rollback SQL> whenever sqlerror continue none |
O exemplo a seguir demonstra o uso da opção EXIT durante um erro de SQL
para sair do aplicativo CLPPlus.
Lista 19.
Ação de saída do WHENEVER
SQLERROR SQL> whenever sqlerror exit SQL> select * from nonexistingtable; SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name. C:\> |
O exemplo a seguir especifica o código de erro retornado durante EXIT. Esse comportamento é idêntico ao comando EXIT do CLPPlus.
Lista 20.
Código EXIT durante WHENEVER
SQLERRORSQL> whenever sqlerror exit failure SQL> select * from nonexistingtable; SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name. C:\echo %errorlevel% 1 |
Os usuários também podem especificar o valor de uma variável de substituição a ser retornado durante a saída. O exemplo a seguir demonstra esse comportamento.
Lista 21. Valor da variável de substituição retornado durante
WHENEVER SQLERRORSQL> define exit_value=6 SQL> whenever sqlerror exit exit_value SQL> select * from nonexistingtable; SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name. C:\echo %errorlevel% 6 |
Conforme suportado pelo comando EXIT do CLPPlus, podemos especificar confirmar ou reverter as transações sempre que ocorrer um erro. Os comandos a seguir demonstram as ações de confirmação e retrocesso com
WHENEVER SQLERROR:
whenever sqlerror exit 2 commit |
O exemplo a seguir mostra o comportamento do CLPPlus durante um erro de SO com o código de erro de saída.
Lista 22. WHENEVER OS ERROR
SQL> whenever oserror exit -1 SQL> get c:\nonexistingfile.sql DB250204E: An attempt to locate a file 'c:\\nonexistingfile.sql' failed. The command cannot be processed. c:\>echo %errorlevel% -1 |
O exemplo a seguir mostra o comportamento do comando quando CONTINUE é especificado com a opção
COMMIT.
Lista 23.
WHENEVER OS ERROR com CONTINUE COMMITSQL> whenever oserror continue commit SQL> get c:\nonexistingfile.sql DB250204E: An attempt to locate a file 'c:\\nonexistingfile.sql' failed. The command cannot be processed. SQL> |
AUTOTRACE fornece informações sobre o plano de acesso que o otimizador seleciona durante a execução de uma instrução, juntamente com alguns valores estatísticos principais para aquela execução específica registrada pelo servidor.
A saída do AUTOTRACE pode ser usada para otimizar as consultas SQL com base na análise dos dados, que é útil no ajuste de desempenho de consultas SQL ou ao diagnosticar a variação nos desempenhos do aplicativo.
SET AUTOT[RACE] { OFF | ON | TRACE[ONLY] } [EXP[LAIN]] [STAT[ISTICS]]
|
Configurar a opção AUTOTRACE como ON possibilitará a exibição de informações de explicação e estatística de cada instrução executada naquela sessão, juntamente os resultados na consulta, até que
AUTOTRACE seja desativado. As opções EXPLAIN e
STATISTICS possibilitam a exibição do plano de explicação e informações de estatística, respectivamente. Informações de estatística incluem estatísticas de rede, custo, informações de bloqueio, classificações, conjunto de E/S, linhas lidas, linhas modificadas e linhas retornadas etc., para nomear alguns. A opção TRACEONLY desativa a exibição dos resultados da execução da consulta.
O exemplo dado abaixo mostra a saída para AUTOTRACE quando definido para ON.
Lista 24.
AUTOTRACE
SQL> SET AUTOTRACE ON
SQL> SELECT EMPNO, FIRSTNME, LASTNAME, WORKDEPT, PHONENO FROM EMPLOYEE
WHERE SALARY=152750 ;
EMPNO FIRSTNME LASTNAME WORKDEPT PHONENO
------ ------------ --------------- -------- -------
000010 CHRISTINE HAAS A00 3978
EXPLAIN PLAN
-------------------------
ID TYPE OBJECT_SCHEMA OBJECT_NAME
------ --------------- -------------------- --------------------
PREDICATE_TEXT
--------------------------------------------------
1 RETURN
2 TBSCAN MANSHANB EMPLOYEE
(Q1.SALARY = +0152750.00)
STATISTICS
---------------------------------
COMPILATION_TIME = 195000
ISOLATION_LEVEL = CS
ROWS_READ = 42
ROWS_RETURNED = 1
ROWS_MODIFIED = 0
TOTAL_SORTS = 0
IN_MEMORY_SORTS = 0
LOCK_WAITS = 0
LOCK_ESCALS = 0
LOCK_TIMEOUTS = 0
POOL_READS = 1
POOL_WRITES = 0
QUERYOPT = 5
ESTIMATED_COST = 8
TOTAL_COST = 7.6209
NETWORK_TRIPS = 2
BYTES_SENT = 505
BYTES_RECEIVED = 1215
|
O exemplo abaixo mostra o uso do AUTOTRACE com o plano EXPLAIN ativado, juntamente com os resultados da consulta. Isso desativa a exibição de informações de estatísticas.
Lista 25. AUTOTRACE com
EXPLAIN ativado
SQL> SET AUTOTRACE ON EXPLAIN
SQL> SELECT EMPNO, FIRSTNME, LASTNAME FROM EMPLOYEE WHERE SALARY=152750 ;
EMPNO FIRSTNME LASTNAME
------ ------------ ---------------
000010 CHRISTINE HAAS
EXPLAIN PLAN
-------------------------
ID TYPE OBJECT_SCHEMA OBJECT_NAME
------ --------------- -------------------- --------------------
PREDICATE_TEXT
--------------------------------------------------
1 RETURN
2 TBSCAN MANSHANB EMPLOYEE
(Q1.SALARY = +0152750.00)
|
O exemplo abaixo demonstra o uso da opção AUTOTRACE com TRACEONLY.
O resultado da consulta exibido é desativado com essa configuração.
Lista 26.
AUTOTRACE com modo TRACEONLY
SQL> SET AUTOTRACE TRACEONLY
SQL> SELECT * FROM EMPLOYEE WHERE SALARY=152750 ;
EXPLAIN PLAN
-------------------------
ID TYPE OBJECT_SCHEMA OBJECT_NAME
------ --------------- -------------------- --------------------
PREDICATE_TEXT
--------------------------------------------------
1 RETURN
2 TBSCAN MANSHANB EMPLOYEE
(Q1.SALARY = +0152750.00)
STATISTICS
---------------------------------
COMPILATION_TIME = 4000
ISOLATION_LEVEL = CS
ROWS_READ = 42
ROWS_RETURNED = 1
ROWS_MODIFIED = 0
TOTAL_SORTS = 0
IN_MEMORY_SORTS = 0
LOCK_WAITS = 0
LOCK_ESCALS = 0
LOCK_TIMEOUTS = 0
POOL_READS = 1
POOL_WRITES = 0
QUERYOPT = 5
ESTIMATED_COST = 8
TOTAL_COST = 7.6209
NETWORK_TRIPS = 2
BYTES_SENT = 462
BYTES_RECEIVED = 2364
|
Essa facilidade de editor integrada suportada pelo CLPPlus pode ser usada ao desenvolver grandes blocos SQL ou PL/SQL. Ela fornece diferentes utilitários de buffer que podem ser úteis para editar, salvar e executar o conteúdo do utilitário SQL Buffer de forma rápida e eficiente. O utilitário SQL Buffer pode ser útil para:
- Modificar o conteúdo do utilitário SQL Buffer excluindo, inserindo ou substituindo uma linha no buffer
- Carregar o conteúdo de um arquivo no buffer SQL
- Editar o conteúdo do buffer usando editor externo
- Executar o conteúdo do buffer
- Salvar o conteúdo do buffer em um arquivo
Qualquer comando SQL ou PL/SQL executado anteriormente no CLPPlus é armazenado no utilitário
SQL Buffer. O comando LIST pode ser usado para listar o conteúdo do buffer SQL no console. Se o usuário desejar ver somente uma linha específica no buffer, então
LIST, seguido do número da linha, exibirá o conteúdo daquela linha no console, como mostra o exemplo abaixo. Somente inserir o número da linha também listará o conteúdo do buffer no número de linha dado.
Lista 27.
Comando LISTSQL> select * from employee 2 where firstnm='MICHAEL'; ERROR near line 1: SQL0206N "FIRSTNM" is not valid in the context where it is used. SQL> list 1 select * from employee 2* where firstnm='MICHAEL' SQL> list 2 2* where firstnm='MICHAEL' SQL> 1 1* select * from employee |
Uma cadeia de caractere específica no utilitário SQL Buffer pode ser substituída usando o comando
CHANGE. Também é possível substituir o texto no buffer em um dado número de linha ou remover a primeira ocorrência de uma cadeia de caractere na linha atual usando esse utilitário.
O exemplo abaixo substitui o token firstnm
por firstnme usando o comando
CHANGE.
Lista 28.
CHANGE SQL> list 1 select * from employee 2* where firstnm='MICHAEL' SQL> change /firstnm/firstnme/ 2* where firstnme='MICHAEL' |
No exemplo abaixo, o texto na linha 2 é substituído pela nova linha de texto. Aqui, 2 representa o número da linha a ser substituída no buffer, seguido do texto.
Lista 29. Substituição de linha usando o número da linha
SQL> 2 where salary>10000 2* where salary>10000 SQL> list 1 select * from employee 2* where salary>10000 |
Podemos anexar texto ao conteúdo do utilitário SQL Buffer ou adicionar texto em uma nova linha no buffer usando os comandos APPEND e INPUT, respectivamente. O utilitário DEL pode ser usado para excluir uma linha específica no buffer. Os exemplos abaixo demonstram esses utilitários.
Lista 30.
INPUT, APPEND e DELSQL> input select * from employee SQL> list 1* select * from employee SQL> append where SQL> list 1* select * from employee where SQL> input salary>10000 SQL> list 1 select * from employee where 2* salary>10000 SQL> del 2 SQL> list 1* select * from employee where SQL> input firstnme='MICHAEL' SQL> list 1 select * from employee where 2* firstnme='MICHAEL' |
O CLPPlus suporta o carregamento do conteúdo de um arquivo para o utilitário SQL ou o salvamento do conteúdo do buffer em um arquivo, o que é útil ao desenvolver scripts SQL
entre várias sessões ou várias máquinas. O utilitário SAVE pode ser usado para salvar o conteúdo do buffer em um arquivo e o utilitário
GET pode ser usado para carregar o conteúdo de um arquivo no utilitário SQL Buffer.
Lista 31.
Utilitários GET e SAVE
SQL> get c:\buffer.sql
1* select * from employee
SQL> input where salary > 10000
SQL> list
1 select * from employee
2* where salary > 10000
SQL> save c:\buffer1.sql
DB250000I: The command completed successfully.
|
O comando barra invertida (/) executa o conteúdo presente no utilitário
SQL Buffer. E o comando CLEAR limpa o conteúdo do utilitário SQL Buffer.
Lista 32. Utilitário de limpeza do buffer
SQL> list 1* select firstnme, salary from employee fetch first 2 rows only SQL> / FIRSTNME SALARY --------------- ----------------------- MICHAEL 15500 JOE 11100 SQL> clear buffer DB250000I: The command completed successfully. SQL> list DB250419W: The SQL buffer is empty. |
O conteúdo do utilitário SQL Buffer também pode ser editado usando um editor externo com a ajuda do comando EDIT . EDIT chama o editor externo com o conteúdo do utilitário SQL Buffer carregado nele, que pode ser modificado pelo usuário e salvo novamente no buffer. Os usuários podem configurar o editor externo a ser usado conforme o requisito.
Atividades que ocorrem em uma sessão do CLPPlus podem ser gravadas em um arquivo usando o recurso de envio para spool. Isso será útil ao desenvolver scripts SQL com comandos executados em uma sessão do CLPPlus. Como resultado, todos os comandos executados e a saída são gravados em um arquivo que pode ser processado para desenvolver os arquivos de script.
É preciso especificar um arquivo ao ativar o envio para spool, no qual a saída da exibição é gravada. O envio para spool também pode ser desativado em qualquer ponto em uma sessão, como mostrado abaixo.
Lista 33.
Comando spoolSQL> spool c:\spooler.sp SQL> select firstnme, salary from employee fetch first 2 rows only; FIRSTNME SALARY --------------- ----------------------- MICHAEL 15500 JOE 11100 SQL> spool off |
Esse artigo forneceu valor para usuários migrando do Oracle para o DB2 oferecendo uma visão geral do suporte à compatibilidade com SQL fornecida no CLPPlus. O CLPPlus tem um papel importante ao possibilitar a migração de scripts de usuários para o DB2, e, portanto, esse artigo pode ser um bom ponto de referência para obter um panorama mais amplo de recursos de compatibilidade com SQL suportados no CLPPlus.
Esse artigo também será útil para usuários existentes do DB2, ao ajudá-los a se familiarizar com as facilidades fornecidas pelo CLPPlus, que são iniciantes nas ferramentas de linha de comando do DB2 e podem ajudá-los a realizar suas tarefas de maneira muito melhor.
Para saber mais sobre o CLPPlus e seus comandos suportados, acesse o Centro de Informações do DB2 para Linux, UNIX e Windows V9.7 .
Aprender
- Obtenha mais informações sobre a geração de relatórios usando o
CLPPlus em "Geração de relatórios formatados para servidores de dados IBM usando o
CLPPlus."
- Visite a Centro de Informações do DB2 para Linux, UNIX e Windows V9.7 .
- Saiba mais sobre a compatibilidade com SQL em "DB2 9.7: Execute aplicativos Oracle em DB2 9.7 para Linux, UNIX e Windows."
- Para obter ajuda sobre treinamento e certificação no
DB2 para Linux, UNIX e Windows, acesse os vários recursos disponíveis no
e-kit do IBM DB2 para profissionais de banco de dados.
- Na área de DB2 para Linux, UNIX e Windows no developerWorks, obtenha os recursos necessários para melhorar seus conhecimentos sobre DB2.
- Saiba mais sobre Information Management na zona de Information Management no developerWorks. Encontre documentação técnica, artigos de instruções, treinamento, downloads, informações de produtos, e muito mais.
- Fique por dentro dos
eventos técnicos e webcasts do developerWorks.
- Siga o developerWorks no Twitter.
Obter produtos e tecnologias
- Faça o download das O DB2 Express-C, a edição gratuita do banco de dados DB2 para Linux,
Windows, Solaris e Mac que é fácil de usar e fornece uma base sólida para criar e implementar aplicativos.
- Faça o download de uma cópia de avaliação do DB2 para Linux, UNIX e Windows para experimentá-lo em seu próprio ambiente
- Crie seu próximo projeto de desenvolvimento com a versão de teste do software IBM,
disponível para download diretamente no developerWorks.
Discutir
- Confira os
blogs do developerWorks e participe da
comunidade do developerWorks.

Mangesh é Staff Software Engineer e trabalha na IBM India pelos últimos três anos e meio. Desde então, ele está associado com o desenvolvimento de ferramentas de Information Management no India Software Lab. Ele tem cerca de cinco anos de experiência em desenvolvimento de produto de software. Atualmente, ele trabalha com a equipe Common Application Development, em que desenvolve recursos de relatórios, script e compatibilidade com o SQL do CLPPlus. Ele é formado em ciência da computação pela VTU Karnataka (Índia). Em seu tempo livre, ele gosta de ler livros e assistir filmes. Ele também é um ávido fã de esportes.