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.