Pular para o conteúdo
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #82316
    jonas_morais
    Participante

      Pessoal 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;

      🙁

      #82322
      Avatar photoRegis Araujo
      Participante

        Jonas, 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.

        #82326
        Marcio68Almeida
        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.

          #82327
          jonas_morais
          Participante

            Concordo com o marcio.
            Essa solução de SELECT MAX(codigo) FROM ESQUEMA.TABELA; pode ocasionar inconsistência nos dados.

            Alguém poderia sugerir alguma outra idéia?

            At.

            #82328
            jonas_morais
            Participante

              Galera 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

              #82329
              jonas_morais
              Participante

                Ops.. correção do código

                INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL)

                SELECT ESQUEMA.SEQ_TABELA.CURRVAL FROM DUAL

                foi mal…

                #82330
                santosclay
                Participante

                  Cara 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.

                  #82331
                  santosclay
                  Participante

                    Cara 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.

                    #82332
                    jonas_morais
                    Participante

                      opa.. funfou, valeu galera…

                      #82415
                      DanielB
                      Participante

                        declare
                        v_retorna number;
                        begin
                        INSERT INTO ESQUEMA.TABELA (ID) VALUES (ESQUEMA.SEQ_TABELA.NEXTVAL) returning ID into v_retorna;
                        end;

                      Visualizando 10 posts - 1 até 10 (de 10 do total)
                      • Você deve fazer login para responder a este tópico.
                      plugins premium WordPress