Criando Procedure - Stored Procedures em PL/SQL

Este é o primeiro artigo de uma série sobre stored procedures do PL/SQL. Seu objetivo é descrever a maneira de criar um programa PL/SQL e executá-lo no SQL*Plus.

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:


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.


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.

Artigos relacionados