Fórum UPDATE DADOS #444210

28/05/2013

0

OLA PESSOAL,

PRECISO DE UMA AJUDA DE VOCÊS, NO BANCO DE DADOS DO TRABALHO EXISTE UM CAMPO QUE GERA NÚMEROS SEQUENCIAS ASSIM PRECISO QUE SEMPRE QUE GERAR UM NUMERO SEQUENCIAL PRECISO SETAR A ULTIMA SEQUENCIA COMO ATIVA (ISSO O SISTEMA JÁ FAZ) SÓ QUE ELE NÃO ESTA DESATIVANDO A PENÚLTIMA COMO SÃO MUITAS SEQUÊNCIAS PRECISO FAZER UM SCRIPT PRA FACILITAR. TIPO PEGAR O ULTIMO - 1 OU ALGO ASSIM.

ATT

KAIO
Kaio

Kaio

Responder

Posts

28/05/2013

Carlos Tangerino

Olá Kaio, respondí sua pergunta no tópico Inserção de Dados. Você pode utilizar o select max(sequencia)-1 from tabela, pegando o penúltimo, seguindo uma linha de raciocínio do outro tópico.

Abraço,
Responder

Gostei + 0

28/05/2013

Kaio

OBRIGADO CARLAO, VOU FAZER ESSE PROCEDIMENTO.

GRATO PELA ATENÇÃO.
Responder

Gostei + 0

28/05/2013

Kaio

INSERT INTO MGGLO.GLO_AGENTESERIEDOC
(AGN_TAB_IN_CODIGO,AGN_PAD_IN_CODIGO,AGN_IN_CODIGO,AGN_TAU_ST_CODIGO,TPD_ST_CODIGO,ASD_ST_SERIEDOC,ASD_CH_STATUS,ASD_ST_DESCRICAO)
VALUES
(53, 1,440500,'N','CH',(SELECT MAX(ASD_ST_SERIEDOC) FROM MGGLO.GLO_AGENTESERIEDOC),'A','serie correção 2013');
SERIEDOC),'A','serie correção 2013');

CARLAO ESSE SELECT (SELECT MAX(ASD_ST_SERIEDOC) FROM MGGLO.GLO_AGENTESERIEDOC) QUE PRECISO QUE SEJA INSERIDO SEMPRE UM NUMERO MAIOR QUE O ULTIMO QUE JA ESTEJA NA TABELA.

AGRADEÇO
Responder

Gostei + 0

28/05/2013

Carlos Tangerino

Deixe dessa maneira, onde você já citou, só faltou o +1:

SELECT MAX(ASD_ST_SERIEDOC)+1 FROM MGGLO.GLO_AGENTESERIEDOC

Ou seja:

Ele pegará o último e somará 1.

Se der algum erro, poste para eu ver.

Abraço,
Responder

Gostei + 0

29/05/2013

Kaio

BOM DIA CARLAO,

FIZ COMO VOCE ME ENSINOU MAS O ORACLE RETORNOU UM ERRO DE EXPRESSÃO NÃO ENCONTRADA ORA00936 APONTANDO PARA O SELECT

O CODIGO FICOU ASSIM:

INSERT INTO MGGLO.GLO_AGENTESERIEDOC
(AGN_TAB_IN_CODIGO,AGN_PAD_IN_CODIGO,AGN_IN_CODIGO,AGN_TAU_ST_CODIGO,TPD_ST_CODIGO,ASD_ST_SERIEDOC,ASD_CH_STATUS,ASD_ST_DESCRICAO)
VALUES
(53, 1,440500,'N','CH',SELECT MAX(ASD_ST_SERIEDOC)+ 1 FROM MGGLO.GLO_AGENTESERIEDOC,'A','serie correção 2013');

ABRAÇO.
Responder

Gostei + 0

29/05/2013

Carlos Tangerino

Bom Dia Kaio,

O select deve ficar entre parenteses:

INSERT INTO MGGLO.GLO_AGENTESERIEDOC
(AGN_TAB_IN_CODIGO,AGN_PAD_IN_CODIGO,AGN_IN_CODIGO,AGN_TAU_ST_CODIGO,TPD_ST_CODIGO,ASD_ST_SERIEDOC,ASD_CH_STATUS,ASD_ST_DESCRICAO)
VALUES
(53, 1,440500,'N','CH',(SELECT MAX(ASD_ST_SERIEDOC)+ 1 FROM MGGLO.GLO_AGENTESERIEDOC),'A','serie correção 2013');

Abraço,
Responder

Gostei + 0

29/05/2013

Kaio

CARLAO FIZ COMO VOCE ME FALOU

INSERT INTO MGGLO.GLO_AGENTESERIEDOC
(AGN_TAB_IN_CODIGO,AGN_PAD_IN_CODIGO,AGN_IN_CODIGO,AGN_TAU_ST_CODIGO,TPD_ST_CODIGO,ASD_ST_SERIEDOC,ASD_CH_STATUS,ASD_ST_DESCRICAO)
VALUES
(53, 1,440500,'N','CH',(SELECT MAX (7)+ 1 FROM MGGLO.GLO_AGENTESERIEDOC),'A','serie correção 2013');


SE PASSAR COMO A VARIÁVEL COMO PARAMETRO ESTA RETORNANDO UM ERRO DE NUMERO INVALIDO MAS PASSANDO O NUMERO COMO ESTA NO CODIGO ACIMA FUNCIONA.

A VARIÁVEL ASD_ST_SERIEDOC ESTA DECLARADA COMO VARCHAR2.
Responder

Gostei + 0

29/05/2013

Carlos Tangerino

Se na coluna ASD_ST_SERIEDOC tiver só números não era pra dar o erro, mas se tiver algum registro com essa coluna sem ser número vai dar pau mesmo, já que o MAX vai pegar aquele que não é numérico, por isso não vai rolar o +1.

Se você fizer SELECT MAX(ASD_ST_SERIEDOC) FROM MGGLO.GLO_AGENTESERIEDOC, o que acontece? Vem number ou varchar?
Responder

Gostei + 0

29/05/2013

Kaio

CARLAO VOCE MATOU A CHARADA TEM ALGUNS CAMPOS QUE ESTAO COM CARACTER DIFERENTE DE NUMEROS.

AGORA TENHO QUE VER OUTRA FORMA DE INSERIR JA QUE NAO POSSO ALTERAR ESSES CAMPOS PARA NUMEROS.

ABRAÇO.
Responder

Gostei + 0

29/05/2013

Kaio

CARLAO, SERA QUE TEM COMO FAZER UM RESTRIÇÃO NO COMANDO MAX PARA ELE FAZER A COMPARAÇÃO SOMENTE ENTRE NUMEROS PEGAR O MAOIR E ADD + 1?

ABRAÇO
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar