Colega, "fácil" é relativo, tudo que vc sabe é "fácil", o que vc não sabe é "difícil" - eu sempre usei as sequences, não vejo assim taaanta dificuldade... E cito também que necessariamente, Oracle é DIFERENTE de SQLServer, MUITOS dos conceitos que vc tem em um não são os mesmos no outro, até porque o perfil de utilização, os volumes típicos, etc, são diferente... No caso em questão, inclusive, é o que ocorre, o Oracle implementa sequences porque as sequences podem ser cacheadas E não implicam em nenhum tipo de enqueue para se assegurar ausência de duplicidade, implica em performance superior via de regra cfrme citado em http://asktom.oracle.com/pls/asktom/f? p=100:11:0::::P11_QUESTION_ID:6575961912937#6597836737589 .....
Quanto à pergunta de retorno de resultset via procedure, REF CURSOR é a resposta, em http://asktom.oracle.com/tkyte/ResultSets/index.html vc tem um exemplo, mas novamente o CONCEITO aqui é diferente, novamente , Oracle <> SQLServer.... Eu recomendaria fortemente que vc estudasse os manuais de Concepts e o Guia de Desenvolvedores Oracle, ** justamente ** para que vc fique conhecendo os conceitos e recomendações da Oracle para se desenvolver em banco Oracle, necessariamente MUITO, mas MUITO MESMO do que vc já usa e conhece em SQLServer vai ser diferente.... Pra complementar os manuais, eu recomendo os livros "Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions", e o "Effective Oracle by Design" , ambos do autor Thomas Kyte, vão ser inestimáveis no seu dia a dia, se o teu objetivo é construir uma aplicação eficiente com o bd Oracle. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "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 > 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]> 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>[mailto: > > oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.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> > > 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> <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><mailto: > > oracle_br%40yahoogrupos.com.br> [mailto:oracle_br@yahoogrupos.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> <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> <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><mailto: > > oracle_br%40yahoogrupos.com.br> <mailto:oracle_br% 40yahoogrupos.com.br> > > [mailto:oracle_br@yahoogrupos.com.br <oracle_br% 40yahoogrupos.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> <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> <mailto:rafael% <rafael%25> > > 40hbtec.com.br> <mailto:rafael% <rafael%25>40hbtec.com.br> <mailto:rafael%<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> <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] >