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