segunda-feira, 20 de outubro de 2008

Declarar Variável - Pl/SQL - Oracle

Podemos usar programação em PL/SQL sem necessariamente criar uma procedure ou function para isso.


DECLARE
ZnNum1 NUMBER(3);

Para declara variáveis, atribuir valores e verificar o valor de saída, veja o trecho de código ilustrado abaixo:


DECLARE
ZnNum1 NUMBER(3);
ZnNum2 NUMBER(3);
ZnData DATE;

BEGIN
ZnNum1 := 3;
ZnNum2 := ZnNum1 + 10;
ZnData := SYSDATE;

DBMS_OUTPUT.PUT_LINE('ZnNum1 = ' || ZnNum1);
DBMS_OUTPUT.PUT_LINE('Calculando ZnNum2 ....');
DBMS_OUTPUT.PUT_LINE('ZnNum2 = ' || ZnNum2);

DBMS_OUTPUT.PUT_LINE('Fim do Cálculo');

DBMS_OUTPUT.PUT_LINE('Data = ' || ZnData);
END;

2 comentários:

  1. Vc saberia me dizer, por favor, como traduzo isso para o oracle??

    DECLARE @DATABAS VARCHAR(8)
    SET @DATABAS = '20090423'

    SELECT A1_NOME,@DATABAS AS DAT FROM SA1990

    ResponderExcluir
  2. Prezado amigo que esta trabalhando com Microsiga,
    No Oracle, para vc declarar uma variável e trabalhar com ela é preciso (obrigatoriamente) que isso seja feito numa procedure. Quando declaramos um bloco “Begin/End”, isso indica para o Oracle que estamos trabalhando com uma procedure anônima. Qual a implicação do que estou falando no contexto do seu problema? É que pelo que vc está solicitando vc precisa dar um “selec” nesta variável (@DATABAS), ou seja, retornar o valor dela num resultset, o correlato a isso no Oracle não existe.
    Caso eu tenha concluído equivocadamente, não existindo a necessidade de retornar o resultset basta vc fazer assim:

    DECLARE
    znDATABAS varchar2(8);

    BEGIN
    znDATABAS := '20090423';
    DBMS_OUTPUT.PUT_LINE(znDATABAS);
    END;

    O Oracle é mto mais burocrático que o SQL Server, se você precisar retornar um resultset numa procedure vai ter mais trabalho que imagina. Principalmente se você esta acostumado com o MS SQL Server (a qual eu considero uma ótima ferramenta).
    Aqui no Estação Zn temos um exemplo de como fazer para retornar um resultset como parâmetro de retorno de um procedure oracle.
    http://estacaozn.blogspot.com/2008/04/type-cursor-retornar-um-resultset-numa.html
    Boa sorte!
    OBS: Já mandei o email.
    Grato por acessar o Estação ZN!

    ResponderExcluir

 
BlogBlogs.Com.Br