1
resposta

Não entendo porque meu índice fica errado

Ele não segue na sequencia: 1 5 PRIMEIRO CLIENTE INCLUIDO POR USSER_APP

2 6 SEGUNDO CLIENTE INCLUIDO POR USER_APP

3 1 SUPERMERCADO XYZ

4 2 SUPERMERCADO IJK

5 3 SUPERMERCADO IJK

6 4 FARMACIA AXZ

CREATE OR REPLACE PROCEDURE app_incluir_cliente (

p_id                    IN  cliente.id%TYPE,
p_razao_social          IN  cliente.razao_social%TYPE,
p_cnpj                  IN  cliente.cnpj%TYPE,
p_segmercado_id         IN  cliente.segmercado_id%TYPE,
p_faturamento_previsto  IN  cliente.faturamento_previsto%TYPE

) IS

BEGIN

incluir_cliente(p_id, p_razao_social, p_cnpj, p_segmercado_id, p_faturamento_previsto);

END;

EXECUTE app_incluir_cliente(6, 'SEGUNDO CLIENTE INCLUIDO POR USER_APP', '23456', 2, 100000);

SELECT * FROM cliente;

1 resposta

Olá Kezio, tudo bem?

Na realidade os registros são ordenados de acordo com o modo de inserção utilizado, aparentemente essa ordem é definida internamente pelo própria Oracle.

Um exemplo: Foi realizada uma inserção a partir de um comando Insert (ID = 5) e foi realizado uma outra inserção na mesma tabela através de uma Procedure(ID= 6), o registro de ID 6 pode ficar após o ID 5 no retorno da consulta, como aconteceu no seu caso.

Caso você queira ordenar a saída dos registros, você pode utilizar a cláusula Order By:

SELECT * FROM cliente ORDER BY id;

Espero ter esclarecido a sua dúvida e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software