Agradeco a todos que responderam em especial ao Andre que mandou esse exemplo 
tosco de procedure q vai me ajuda a esclarecer muita coisa.. 

Vou tentar seguir as recomendacoes de leitura do Chiappa, q entende bastante do 
assunto, vi muita coisa sua na net.. 

Agora soh mais uma duvida tosca.. 

Como que eu chamo essa procedure, ,pois nao sei o que passar no segundo 
parametro...

call sp_teste('20',???); 

????
[]s


********************************
***** Renan S. Nucci *****
***** Desenvolvedor *****
********************************
  ----- Original Message ----- 
  From: Andre Santos 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, May 03, 2007 2:15 PM
  Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor 
gerado..


  Renan

  Mas não é difícil criar um trigger para fazer essa "amarração".
  Vide o exemplo que acabei de mandar em resposta ao Marco.

  Há outros BD's que trabalham com o conceito de "sequence" também... DB2 (da
  IBM), Postgre...
  Inclusive, se não me engano, tanto SEQUENCE, como colunas IDENTITY, fazem
  parte do padrão ANSI.
  Claro que uma coluna "identity" poderia facilitar em alguns casos... mas,
  pessoalmente, eu prefiro as "sequences".

  Além do que o mestre Chiappa já mencionou, há coisas que você pode com
  sequences que não poderiam ser realizadas com identity.
  Por exemplo, tabelas diferentes seguindo uma mesma seqüência.

  A procedure que você exemplificou, ficaria +/- assim no Oracle (versão 9i ou
  superior):

  CREATE OR REPLACE PROCEDURE sp_teste
  (
  cod IN VARCHAR2,
  consulta OUT SYS_REFCURSOR
  )
  AS
  BEGIN
  OPEN consulta FOR
  SELECT * FROM tabela WHERE codigo = :cod;
  END sp_teste;
  /

  [ ]'s

  André

  Em 03/05/07, Renan Nucci - CSM Soft <[EMAIL PROTECTED]> escreveu:
  >
  > Blz,, agradeço as respostas,,
  > agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo
  > nao ter uma maneira mais facil para esse tipo de problemas....
  >
  > Um outro ponto que eu nao estou acertando eh em relacao a procedures..
  >
  > Pois se tenhu que fazer um select dentro de uma procedure eu preciso
  > declarar um vetor ou jogar o resultado do select em uma variavel???
  >
  > como faço pra declarar uma variavel pra acertar a procedure abaixo?
  >
  > create procedure teste (:cod in varchar)
  > is
  > begin
  > select * from tabela where codigo = :cod;
  > end
  >
  > ********************************
  > ***** Renan S. Nucci *****
  > ***** Desenvolvedor *****
  > ***** CSM Software *****
  > ********************************
  > ----- Original Message -----
  > From: Andre Santos
  > To: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
  > Sent: Thursday, May 03, 2007 11:02 AM
  > Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor
  > gerado..
  >
  > Só acrescentando, ao que o Marco já explicou, é possível criar um trigger
  > para "insert", obtendo o valor da sequence (dessa forma ficaria bem
  > semelhante ao uma coluna do tipo "autonumeração").
  >
  > [ ]'s
  >
  > André
  >
  > Em 02/05/07, FERNANDES Marco A SOFTTEK <
  > [EMAIL PROTECTED]<mfernandes%40fornecedores.confab.com.br>>
  > escreveu:
  >
  > > Renan,
  > > pequeno detalhe.... no seu select vc não usa mais a sequence !
  > > Use-a apenas no insert.
  > >
  > > O currentval da sequence não é o que vc procura.
  > > Vc precisa especificar o código na busca e não o valor da sequence.
  > > Como te disse, a sequence não tem relação com a tabela. É apenas um
  > > artifício para controlar um sequencia numérica.
  > >
  > > Portanto, não use o currentval no select, pois ele não serve para isso.
  > >
  > > Caso vc queira consultar o último registro inserido utilize a cláusula
  > > where usando max(campo_id).
  > >
  > > valeu, abraço,
  > > Marco.
  > >
  > > ________________________________
  > >
  > > From: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br>[mailto:
  > > oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br>] On Behalf
  > > Of PUB: Renan Nucci - CSM Soft
  > > Sent: quarta-feira, 2 de maio de 2007 17:52
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br>
  > > Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Criei conforme vossa orientação, mas nao consigo selecionar o que foi
  > > inserido..
  > > O que esta errado no que fiz abaixo??
  > >
  > > /*cria a sequencia*/
  > > create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue
  > start
  > > with 1
  > > commit
  > >
  > > /*tenta nserir usando sequence*/
  > > ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da
  > > sessao*/
  > > insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2,
  > > '2001-01-01') ;
  > > commit;
  > > /*seleciona o que foi inserido*/
  > > select * from produtos where codigo = produtos_codigo.CURRVAL;
  > >
  > > ********************************
  > > ***** Renan S. Nucci *****
  > > ***** Desenvolvedor *****
  > > ***** CSM Software *****
  > > ********************************
  > > ----- Original Message -----
  > > From: FERNANDES Marco A SOFTTEK
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br> <mailto:
  > > oracle_br%40yahoogrupos.com.br>
  > > Sent: Wednesday, May 02, 2007 5:10 PM
  > > Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Renan, a tabela não tem ligação direta com a sequence.
  > > A tabela tem uma coluna tipo Number normal.
  > > O vínculo estará apenas no insert na tabela da seguinte forma:
  > >
  > > insert into tabela (coluna_ID, coluna_2, coluna_3)
  > > values (nome_sequence.nextval(), valor_2, valor_3);
  > >
  > > A sequence quando criada vc especifica o valor inicial, incremento,
  > > máximo, ciclicidade, etc.
  > > Portanto, vc deve iniciar com 1 e máximo de 99999 onde o número de noves
  > > depende do
  > > tamanho do seu number... se for number(3) o máximo é 999.... o
  > incremento
  > > põe 1, ou seja,
  > > soma sempre 1 (incremento normalmente usado).
  > >
  > > Ou seja, na criação da tabela não tem segredo... cria ela normal.
  > > Aí nos inserts tem que tratar... não é recomendado reaproveitamento de
  > > chave nesse
  > > caso pois vc teria que tratar também a sequence.
  > >
  > > Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o
  > > select max + 1.
  > >
  > > Abraço,
  > > Marco.
  > >
  > > ________________________________
  > >
  > > From: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br><mailto:
  > > oracle_br%40yahoogrupos.com.br> 
[mailto:oracle_br@yahoogrupos.com.br<oracle_br%40yahoogrupos.com.br>
  > <oracle_br%40yahoogrupos.com.br><mailto:
  > > oracle_br%40yahoogrupos.com.br> ] On Behalf Of PUB: Renan Nucci - CSM
  > Soft
  > > Sent: quarta-feira, 2 de maio de 2007 16:45
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br> <mailto:
  > > oracle_br%40yahoogrupos.com.br>
  > > Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > O que me impediu de criar a sequence eh o primeiro valor, pois nas
  > minhas
  > > tentativas estavao dando erros. lembro de ter lido que para usar uma
  > > sequence o campo deve ter o valor gerado pela sequence.. :/
  > >
  > > eh por isso q pedi um exemplo que me mostrasse a "traducao" de uma
  > tabela
  > > do ss para o oracle..
  > >
  > > ********************************
  > > ***** Renan S. Nucci *****
  > > ***** Desenvolvedor *****
  > > ***** CSM Software *****
  > > ********************************
  > > ----- Original Message -----
  > > From: FERNANDES Marco A SOFTTEK
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br> <mailto:
  > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br%40yahoogrupos.com.br>
  > > Sent: Wednesday, May 02, 2007 4:04 PM
  > > Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Para se encriptar uma procedure é necessário o uso da ferramenta WRAP
  > > existente no oracle... cada versão de banco tem sua própria ferramenta
  > > wrap.
  > >
  > > Dá uma olhada no Help desse cara pra pegar os detalhes.
  > >
  > > Abraço,
  > > Marco.
  > >
  > > ________________________________
  > >
  > > From: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br><mailto:
  > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br%40yahoogrupos.com.br>
  > > [mailto:oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br><mailto:
  > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br%40yahoogrupos.com.br>
  > ]
  > > On Behalf Of PUB: Rafael Alexandre Schmitt
  > > Sent: quarta-feira, 2 de maio de 2007 15:54
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br> <mailto:
  > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br%40yahoogrupos.com.br>
  > > Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Olá,
  > >
  > > Bom, para criar uma sequence você usa o create sequence , existem vários
  > > exemplos disponíveis na net.
  > > Com a sequence criada você pode usar o nextval para retornar o próximo
  > > valor se é isso que você deseja.
  > >
  > > Quanto a encriptar o corpo da procedure eu não sei como isso pode ser
  > > feito.
  > >
  > > --
  > > Rafael Alexandre Schmitt
  > > [EMAIL PROTECTED] <rafael%40hbtec.com.br> <rafael%40hbtec.com.br>
  > <mailto:rafael% <rafael%25> <rafael%25>
  > > 40hbtec.com.br> <mailto:rafael% <rafael%25> <rafael%25>40hbtec.com.br>
  > <mailto:rafael% <rafael%25><rafael%25>
  > > 40hbtec.com.br> || www.hbtec.com.br
  > > Blumenau - Santa Catarina
  > >
  > > ----- Original Message -----
  > > From: Renan Nucci - CSM Soft
  > > To: oracle_br@yahoogrupos.com.br 
<oracle_br%40yahoogrupos.com.br><oracle_br%40yahoog
  > rupos.com.br> <mailto:
  > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br%40yahoogrupos.com.br>
  > > <mailto:oracle_br%40yahoogrupos.com.br>
  > > Sent: Wednesday, May 02, 2007 3:31 PM
  > > Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Esqueci de dizer tb que preciso de criptografar o texto dessa procedure,
  > > para nao se conseguir ver o corpo da procedure....
  > >
  > > por isso q na procedure de exemplo que mandei, existe o with
  > encryption...
  > >
  > >
  > > obrigado
  > >
  > > ********************************
  > > ***** Renan S. Nucci *****
  > > ***** Desenvolvedor *****
  > > ***** CSM Software *****
  > > ********************************
  > > ----- Original Message -----
  > > From: Renan Nucci - CSM Soft
  > > To: oracle_br
  > > Sent: Wednesday, May 02, 2007 2:23 PM
  > > Subject: [oracle_br] Criacao de sequence e dar select no novo valor
  > > gerado..
  > >
  > > Boa tarde pessoal,
  > >
  > > Estou precisando de criar no oracle algumas tabelas que tenho no sql
  > > server, soh que o funionamento das mesmas devem ser identico.
  > >
  > > no SS tenho essa tabela por exemplo,
  > >
  > > Create table Produtos(
  > > codigo int primary key IDENTITY (1, 1) not null ,
  > > descricao varchar(100),
  > > valor Decimal(18,2),
  > > qtde int,
  > > datacad datetime
  > > )
  > >
  > > e tenho uma procedure assim:
  > >
  > > create procedure Insert_Cad_Produtos
  > > @descricao varchar(100),
  > > @Valor decimal(18,2),
  > > @Qtde int,
  > > @Datacad datetime
  > > with encryption
  > > AS
  > > Begin
  > > insert into Produtos (descricao, Valor, Qtde, dataCad)values(@descricao,
  > > @Valor, @Qtde, @datacad)
  > > select * from Produtos where Codigo = @@Identity
  > > end;
  > >
  > > Sempre que for inserir eu chamo essa procedure, que apos a insercao da
  > um
  > > select no item inserido...
  > >
  > > Como que eu crio uma tabela no oracle com a funcionalidade do identity
  > do
  > > SS????
  > > e como ficaria essa procedure???
  > >
  > > Pelo q ja li, creio q vou ter de criar uma sequence, mas nao sei como
  > usar
  > > isso, pois nao manjo de oracle, estou vendo agora..
  > >
  > > Alguem poderia fazer esse grande favor de mandar o script da tabela e da
  > > proceure para o oracle??
  > >
  > > obrigado
  > >
  > > ********************************
  > > ***** Renan S. Nucci *****
  > > ***** Desenvolvedor *****
  > > ***** CSM Software *****
  > > ********************************
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > ----------------------------------------------------------
  > > Esta mensagem foi verificada pelo E-mail Protegido Terra.
  > > Scan engine: McAfee VirusScan / Atualizado em 02/05/2007 / Versão:
  > 5.1.00
  > > /5022
  > > Proteja o seu e-mail Terra: http://mail.terra.com.br/ <
  > > http://mail.terra.com.br/> <http://mail.terra.com.br/ <
  > > http://mail.terra.com.br/> > <http://mail.terra.com.br/ <
  > > http://mail.terra.com.br/> <http://mail.terra.com.br/ <
  > > http://mail.terra.com.br/> > >
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > >
  > >
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > 
  >

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



   

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

Responder a