RES: [oracle_br] Recuperar rowid após um Insert
A todos que tentaram ajudar, eu encontrei uma solução que foi a seguinte: Eu criei uma trigger after insert for each row para todas as tabelas que atribui o ":new.rowid" a uma variável de uma package, e depois lá na frente eu recupero o valor desta variável. Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse. Isaías 40:3-5 -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcio Cruz Enviada em: terça-feira, 31 de outubro de 2006 08:43 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Recuperar rowid após um Insert Na programação em Dephi: eu uso uma função de currval from dual e, depois, mando selecionar o SELECT ROWD FROM TABELA WHERE CHAVE = CURRVAL Alexandre Rocha Placido escreveu: > > > Alguém sabe se tem com recuperar o último rowid gerado pelo Oracle após um > Insert? > > Tentei algo como o comando abaixo mas não funcionou > > > > Insert Into > AGROVALE.SCHEMAS_T(SCHEMA_ID,SCHEMA_DESC,ROWVERSION,DML_USER,DML_DATE,DML_HO > UR) > > > Values('SISTI','SISTI',to_number('906745'),'APLACIDO',to_date('26-OCT-06'),' > 10:25') > > returnig rowid into vRowid > > > > Claro que isso vai rodar dentro de uma package. Foi sugestão de uma outra > pessoa. > > Mas no resumo o que eu precisava mesmo era recuperar o rowid da linha > inserida, de antemão pela lógica da aplicação só será inserida uma > linha por > vez. > > > > > > > > Alexandre Rocha Placido > > Divisão de Tecnologia da Informação - Agrovale > > Fone: +55 74 3612-2900 > > +55 87 8802-0474 > > MSN [EMAIL PROTECTED] > > > > Eis a voz do que clama: Preparai no deserto o caminho do Senhor; > endireitai > no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será > abatido todo monte e todo outeiro; e o terreno acidentado será > nivelado, e o > que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne > juntamente a verá; pois a boca do Senhor o disse. Isaías 40:3-5 > > Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ 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
RES: [oracle_br] Recuperar rowid após um Insert
Bruno, Obrigado pela atenção, mas isso eu sei que poderia ser feito, é que o insert é montado dinamicamente, aí teria que ter um select montado dinamicamente para ercuperar isso também, até dá para fazer apesar da dificuldade do fato de cada tabela ter uma PK diferente, mas temos já algumas funções que retornar qual a PK de uma determinada tabela, porém existe um outro problema bem maior é que algumas das tabelas envolvidas tem milhares ou milhões de linha e aí a performance ficaria altamente comprometida. Tentei usar os exemplos da documentação da Oracle, mas dá sempre erro. Exemplo: DECLARE TYPE EmpCurTyp IS REF CURSOR; TYPE NumList IS TABLE OF NUMBER; TYPE NameList IS TABLE OF VARCHAR2(25); emp_cv EmpCurTyp; empids NumList; enames NameList; sals NumList; BEGIN OPEN emp_cv FOR 'SELECT employee_id, last_name FROM employees'; FETCH emp_cv BULK COLLECT INTO empids, enames; CLOSE emp_cv; EXECUTE IMMEDIATE 'SELECT salary FROM employees' BULK COLLECT INTO sals; END; / Tentei montar algo igualzinho mas não funcionou. Continuo no aguardo de ajuda Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse. Isaías 40:3-5 _ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Lorenzini Bruno Enviada em: quinta-feira, 26 de outubro de 2006 13:23 Para: oracle_br@yahoogrupos.com.br Assunto: RE: [oracle_br] Recuperar rowid após um Insert Faça um select pelo chave da tabela retornado o rowid. Select rowid from emp where empno = <> [[]]'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Alexandre Rocha Placido Sent: Thursday, October 26, 2006 10:27 AM To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Recuperar rowid após um Insert Alguém sabe se tem com recuperar o último rowid gerado pelo Oracle após um Insert? Tentei algo como o comando abaixo mas não funcionou Insert Into AGROVALE.SCHEMAS_T(SCHEMA_ID,SCHEMA_DESC,ROWVERSION,DML_USER,DML_DATE,DML_HO UR) Values('SISTI','SISTI',to_number('906745'),'APLACIDO',to_date('26-OCT-06'),' 10:25') returnig rowid into vRowid Claro que isso vai rodar dentro de uma package. Foi sugestão de uma outra pessoa. Mas no resumo o que eu precisava mesmo era recuperar o rowid da linha inserida, de antemão pela lógica da aplicação só será inserida uma linha por vez. Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] "Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse." Isaías 40:3-5 [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] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ 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
RE: [oracle_br] Recuperar rowid após um Insert
Faça um select pelo chave da tabela retornado o rowid. Select rowid from emp where empno = <> [[]]'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Alexandre Rocha Placido Sent: Thursday, October 26, 2006 10:27 AM To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Recuperar rowid após um Insert Alguém sabe se tem com recuperar o último rowid gerado pelo Oracle após um Insert? Tentei algo como o comando abaixo mas não funcionou Insert Into AGROVALE.SCHEMAS_T(SCHEMA_ID,SCHEMA_DESC,ROWVERSION,DML_USER,DML_DATE,DML_HO UR) Values('SISTI','SISTI',to_number('906745'),'APLACIDO',to_date('26-OCT-06'),' 10:25') returnig rowid into vRowid Claro que isso vai rodar dentro de uma package. Foi sugestão de uma outra pessoa. Mas no resumo o que eu precisava mesmo era recuperar o rowid da linha inserida, de antemão pela lógica da aplicação só será inserida uma linha por vez. Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] "Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse." Isaías 40:3-5 [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ 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
[oracle_br] Recuperar rowid após um Insert
Alguém sabe se tem com recuperar o último rowid gerado pelo Oracle após um Insert? Tentei algo como o comando abaixo mas não funcionou Insert Into AGROVALE.SCHEMAS_T(SCHEMA_ID,SCHEMA_DESC,ROWVERSION,DML_USER,DML_DATE,DML_HO UR) Values('SISTI','SISTI',to_number('906745'),'APLACIDO',to_date('26-OCT-06'),' 10:25') returnig rowid into vRowid Claro que isso vai rodar dentro de uma package. Foi sugestão de uma outra pessoa. Mas no resumo o que eu precisava mesmo era recuperar o rowid da linha inserida, de antemão pela lógica da aplicação só será inserida uma linha por vez. Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse. Isaías 40:3-5 [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ 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