- Este tópico contém 9 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 7 meses atrás por
DanielB.
-
AutorPosts
-
28 de julho de 2008 às 5:18 pm #82316
jonas_morais
ParticipantePessoal estou iniciando em oracle e estou com a seguinte duvida:
preciso inserir em uma tabela e pegar o id que foi recem inserido, por exemplo:
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL)
SELECT ID
eu estou tentando fazer o seguinte, mas dá erro “PL/SQL: ORA-00923: palavra-chave FROM não localizada onde esperada”
DECLARE codigo INTEGER;
BEGIN
SELECT ESQUEMA.SEQ_TABELA.NEXTVAL INTO codigo FROM DUAL;INSERT INTO ESQUEMA.TABELA (ID) VALUES (codigo);
SEELCT codigo;
END;
🙁
28 de julho de 2008 às 8:01 pm #82322Regis Araujo
ParticipanteJonas, boa tarde!
Creio que você quer saber qual o ultimo valor inserido, se você estiver usando uma seqüence, basta trazer o MAX(ID) da tabela, pois ele irá mostrar o ultimo valor inserido.
SELECT MAX(codigo) FROM ESQUEMA.TABELA;
Obs: O erro ocorre pois você faz um select sem informar de qual tabela ele deve buscar a informação:
Select codigo ” from tabela” e não Select Codigo.
Abraços.
28 de julho de 2008 às 9:18 pm #82326Marcio68Almeida
Participante[quote=”Thunder_Catz”:2gzt5p1g]SELECT MAX(codigo) FROM ESQUEMA.TABELA;
[/quote]
Isto não é uma boa solução, pois podem ter dois registros sendo inseridos simultaneamente e ambos vão acabar resgatando o valor do último.28 de julho de 2008 às 9:30 pm #82327jonas_morais
ParticipanteConcordo com o marcio.
Essa solução deSELECT MAX(codigo) FROM ESQUEMA.TABELA;pode ocasionar inconsistência nos dados.Alguém poderia sugerir alguma outra idéia?
At.
28 de julho de 2008 às 9:58 pm #82328jonas_morais
ParticipanteGalera fiz assim:
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL)
SELECT ESQUEMA.SEQ_TABELA.NEXTVAL.CURRVAL FROM DUAL
e deu o seguinte erro: “ORA-00933: comando SQL não encerrado adequadamente” não sei que é isso
28 de julho de 2008 às 10:05 pm #82329jonas_morais
ParticipanteOps.. correção do código
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL)SELECT ESQUEMA.SEQ_TABELA.CURRVAL FROM DUAL
foi mal…
28 de julho de 2008 às 10:52 pm #82330santosclay
ParticipanteCara tente colocar “;” no do comando insert e do select.
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL);SELECT ESQUEMA.SEQ_TABELA.CURRVAL FROM DUAL;
Abraços Clayton.
28 de julho de 2008 às 10:53 pm #82331santosclay
ParticipanteCara tente colocar “;” no final do comando insert e do select.
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL);SELECT ESQUEMA.SEQ_TABELA.CURRVAL FROM DUAL;
Abraços Clayton.
28 de julho de 2008 às 11:06 pm #82332jonas_morais
Participanteopa.. funfou, valeu galera…
11 de agosto de 2008 às 9:41 pm #82415DanielB
Participantedeclare
v_retorna number;
begin
INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL) returning ID into v_retorna;
end; -
AutorPosts
- Você deve fazer login para responder a este tópico.