1. Introdução
O objetivo principal deste artigo é demonstrar a forma como um programa PL/SQL pode ser criado em um editor de textos qualquer para posteriormente ser compilado e executado no SQL*Plus. Será elaborada uma stored procedure bem simples, para exibir a mensagem “Hello World!” no console.
2. Criando e Executando um Programa
Execute as seguintes etapas:
1. Digitação do Programa: digite em um editor de textos qualquer o código apresentado a seguir.
Listagem 1: Stored Procedure que imprime a mensagem Hello World
CREATE OR REPLACE PROCEDURE p_hello IS
BEGIN
/* Corpo do Bloco de Comandos */
DBMS_OUTPUT.PUT_LINE('Hello World!'); -- imprime “Hello World!”
END p_hello;
/
Este programa cria uma procedure chamada “p_hello”, que contém apenas uma linha de comando. Note que:
- A primeira linha do programa indica o tipo de módulo que está sendo criado (PROCEDURE) e também atribui um nome (p_hello) a este módulo.
- O corpo do bloco de comandos (ou bloco principal) é delimitado pelas palavras reservadas BEGIN e END.
- O comando DBMS_OUTPUT.PUT_LINE é utilizado para fazer a saída de informações. Na verdade, DBMS_OUTPUT é o nome do pacote interno (built-in package) do PL/SQL que contém procedures voltadas saída de dados no console (SQL*Plus), sendo que PUT_LINE é uma destas procedures. Este pacote é usado principalmente na depuração de programas e ainda será discutido nesta apostila. Por enquanto você pode imaginar o DBMS_OUTPUT.PUT_LINE como algo similar ao “System.out.println” do Java, ou ao comando “printf” do C.
- Os comentários podem ser definidos entre os símbolos “/*” e “*/” ou depois de dois traços “ -- ” . No primeiro caso, podem ser colocados em múltiplas linhas.
- O texto é encerrado com “ / ” para forçar a compilação do programa no SQL*Plus (“ / ” é o comando “siga em frente” no SQL*Plus).
2. Compilação do Programa: Agra que o programa está pronto, poderá ser armazenado e compilado no banco Oracle. O SQL*Plus pode ser usado para isso.
- Salve o programa numa pasta do seu micro. Por exemplo: “c:\temp\p_hello.txt”.
- Execute o SQL*Plus, conectando em alguma base que você possa acessar. Com isto você estará abrindo uma sessão com o Oracle.
- Inicialmente, será preciso compilar a procedure. A melhor maneira para fazer isso no SQL*Plus é através do comando “ @ ” (comando que permite a leitura de scripts).
Listagem 2: Compilação da Stored Procedure no SQL*Plus
SQL> @c:\temp\p_hello.txt
Procedimento criado.
3. Execução do Programa: pode ser feita com o uso do comando EXECUTE (ou EXEC) do SQL*Plus. Digite:
Listagem 3: Execução do Programa
SQL> exec p_hello;
Procedimento PL/SQL concluído com sucesso.
Note que algo estranho aconteceu. Embora o SQL*Plus tenha informado que a procedure foi executada com sucesso, a mensagem “Hello World!” não foi exibida na tela. Isto ocorre porque a sessão do SQL*Plus se inicia configurada para não exibir a saída de dados gerada pelo DBMS_OUTPUT. Para mudar este comportamento execute o seguinte comando:
Listagem 4: Habilitando mensagens de console
SQL> SET SERVEROUT ON
Isto habilita a saída de dados no SQL*Plus para a sessão corrente. Ele precisa ser digitado uma única vez por sessão (uma vez o comando digitado, ele ficará válido para toda a sessão do SQL*Plus). Execute novamente a procedure. Desta vez, a mensagem será exibida no console.
Listagem 3: Execução do Programa após o SET SERVEROUT ON
SQL> exec p_hello;
Hello World!
Procedimento PL/SQL concluído com sucesso.
IMPORTANTE: EXEC, @ e SET SERVEROUT NÃO são comandos da linguagem PL/SQL, e sim comandos do SQL*Plus. SQL*Plus é o console fornecido pela Oracle para permitir a execução interativa de comandos SQL e programas PL/SQL. Esta apostila apresentará pouquíssimos comandos do SQL*Plus, uma vez que tem por objetivo abordar a programação PL/SQL.