Jump to content

Dúvida PL/SQL


maomelov
 Share

Recommended Posts

--ACRESCENTAR UMA COLUNA COM O NOME "NUMERO" Á TABELA EMP.

ALTER TABLE EMP

ADD NUMERO NUMBER(3)

/

Podem dizer-me que instrução devo usar para inserir um numero automaticamente numa coluna mas de forma ascendente por outro campo? como mostro no exemplo.

--CRIAR UM BLOCO DE PL/SQL QUE INTRODUZ AUTOMATICAMENTE O

--NUMERO NA RESPECTIVA COLUNA.

--REGRA -- ACRESCENTAR ASCENDENTEMENTE POR DATA DE ADMISSAO (campo HIREDATE DA TABELA EMP)

--01/01/2005 - 1

--03/01/2005 - 2

Podem ajudar-me ?

--...

Link to comment
Share on other sites

Isso tem que passar sempre por código a correr no trigger, se não estou em erro no before insert.

Depois tens que usar uma sequência para ir atribuindo o número ou fazer um select ao máximo dos registos existentes e incrementar para determinar o próximo número.

por exemplo:

select nvl(max(nome_da_coluna),0) + 1 into :new.nome_da_coluna from tabela x:

Não testei, mas a ideia é mais ou menos esta...se calhar vais ter que usar por ai uma variável porque não tenho a  certeza se esse select vai aceitar a soma....

De qualquer modo, o NVL, será para a o primeiro valor, para transformar o nulo em 0 senão estourava.

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Link to comment
Share on other sites

Penso que queres é fazer um pl/sql para preencher de uma vez a coluna NUMERO com um valor dependente da coluna hiredate certo ?

Para isso convinha saber qual a primary key que tens na tabela e depois fazeres algo como

DECLARE
    i    INT;
BEGIN
    i := 1;
    FOR linha IN (SELECT primary_key FROM EMP ORDER BY hiredate ASC) LOOP
        UPDATE EMP
        SET number = i
        WHERE primary_key = linha.primary_key;
        i := i +1;
    END LOOP;

    COMMIT;
END;
/

Deve funcionar para o que queres.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.