Bom dia grupo, sou iniciante no Oracle,

 

Estou usando o SQL Developer para construir os scripts/querys e estou com
dúvida de como fazer uma procedure aqui. Fiz um exemplo simples no SQL
Server do que preciso fazer no Oracle 9i. Tentei fazer uma usando somente
campos numéricos e usando uma tabela temporária, ela roda grava o resultado
incrementado em um while, mas não conseguir fazer um incremento numa
variável varchar e nem conseguir fazer com que a procedure retorne os dados
logo após o processamento.

 

Segue abaixo em preto o que está funcionando no SQL Server e representa um
exemplo do que estou precisando fazer no Oracle e mais abaixo em Azul o que
já fiz no Oracle e ainda não conseguir trabalhar com a variável/parâmetro da
procedure tipo varchar (incrementar data armazenada como texto) e nem fazer
com que ao chamar a procedure ela alimente a tabela temporária e já em
seguida retorne o resultado através de um select.  Perguto isto é possível?
Alguém poderia me ajudar? Estou realmente precisando... desde já agradeço.

-------------- código da procedure no SQL Server

 

CREATE PROCEDURE TESTE2 AS 

DECLARE @DATA1 VARCHAR(08), @DATA2 VARCHAR(08), @DATAAUX VARCHAR(08)

 

SET @DATA1 = '20060801'

SET @DATA2 = '20060805'

SET @DATAAUX = @DATA1

 

DECLARE @VARTAB TABLE (DATA VARCHAR(08))

 

SET NOCOUNT ON

WHILE @DATAAUX <= @DATA2

BEGIN

            INSERT INTO @VARTAB (DATA)

            VALUES (@DATAAUX)

            

            SET @DATAAUX =
CONVERT(VARCHAR,DATEADD(DD,1,CONVERT(DATETIME,@DATAAUX,113)),112)

END

SET NOCOUNT OFF

 

SELECT * 

FROM @VARTAB

--------------------------------------------

--execução da procedure no SQL Server

 

EXEC TESTE2

 

--------------------------------------------

-- retorno / resultado no SQL Server

 

DATA     

-------- 

20060801

20060802

20060803

20060804

20060805

 

(5 row(s) affected)

 

----------------------------------------------------- o que já consegui
fazer no Oracle 9i

--CREATE TABLE TESTE(NUMERO NUMERIC(2));

 

create or replace procedure teste1(

V_DATA1 int,

V_DATA2 int)

 

is

begin        

   declare v_aux int;

   

   begin   

   v_aux := v_data1;

 

   delete teste;

      

   while v_aux <= v_DATA2 loop

   

      INSERT INTO TESTE(NUMERO)

      VALUES(v_aux);

      

      DBMS_OUTPUT.PUT_LINE(V_DATA1);

      v_aux := V_aux + 1;

   end loop;

end;

end;

 

------------------------------- execucao 

call teste1(1,5)

 

* nao retorna resultado

 

---- só vejo o resultado ao numa segunda etapa executar o comando select na
tabela temporária

 

SELECT * FROM TESTE

 

Resultado 

 

1

2

3

4

5

 

 

Att.

 

--

Luiz Scarpelli

 



[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a