- Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por Leonardo Litz.
-
AutorPosts
-
21 de outubro de 2008 às 6:17 pm #83277midyParticipante
Não sei o q utilizo p inserir na tabela maior_salario, o id e o nome completo com concatenação, o salario dos empregados com os 10 salarios maiores….
Faça um procedimento armazenado que insira na tabela maior_salario o Id, o nome completo ( concatenação do prim_nome com o ult_nome ), o cargo e o salario dos empregados com os 10 maiores salarios.Voce deverá implementar a procedure com um cursor em uma estrutura de FOR. Obs Se existirem empregados com salarios iguais todos deveram ser listados.
Comando de criação da tabela maior_salario
CREATE TABLE maior_salario
(id NUMBER(7),
nome VARCHAR2(20) ,
cargo VARCHAR2(25),
salario NUMBER(11, 2),
CONSTRAINT maior_salario_id_pk PRIMARY KEY (id));21 de outubro de 2008 às 6:19 pm #83278midyParticipanteSERIA EM PLSQL…. E TO UTILIZANDO O BANCO DE DADOS ORACLE
21 de outubro de 2008 às 7:58 pm #83279Anônimo[quote=”midy”:2lmj649c]SERIA EM PLSQL…. E TO UTILIZANDO O BANCO DE DADOS ORACLE[/quote]
faz um select para pegar o maior salario e insert na tabela criada
21 de outubro de 2008 às 8:55 pm #83280Anônimo[quote=”midy”:2gah5xii]Não sei o q utilizo p inserir na tabela maior_salario, o id e o nome completo com concatenação, o salario dos empregados com os 10 salarios maiores….
Faça um procedimento armazenado que insira na tabela maior_salario o Id, o nome completo ( concatenação do prim_nome com o ult_nome ), o cargo e o salario dos empregados com os 10 maiores salarios.Voce deverá implementar a procedure com um cursor em uma estrutura de FOR. Obs Se existirem empregados com salarios iguais todos deveram ser listados.
Comando de criação da tabela maior_salario
CREATE TABLE maior_salario
(id NUMBER(7),
nome VARCHAR2(20) ,
cargo VARCHAR2(25),
salario NUMBER(11, 2),
CONSTRAINT maior_salario_id_pk PRIMARY KEY (id));[/quote]SELECT NOME, CARGO, SALARIO,
FROM NOME_TABELA_ONDE_ESTA_OS_SALARIOS A
ORDER BY DESC SALARIO21 de outubro de 2008 às 10:48 pm #83282Rodrigo MesquitaParticipanteO Oracle possue uma função chamada RANK, pesquisando no google vc vai encontrar vários exemplos e explicações de como ela funciona.
Não sei como é a sua tabela com os salarios dos funcionários, mais no exemplo vamos considerar que a tabela que vai ser consultada é assim
create table SALARIOS_FUNCIONARIOS
(
ID NUMBER(2),
PRIM_NOME VARCHAR2(100),
ULT_NOME VARCHAR2(100),
CARGO NUMBER(2),
SALARIO NUMBER(4)
);a procedure ficaria assim
CREATE OR REPLACE PROCEDURE INSERE_SALARIOS IS
CURSOR C_SAL IS (select ID, NOME, CARGO, SALARIO
from (select ID,
PRIM_NOME || ‘ ‘ || ULT_NOME NOME,
CARGO,
SALARIO,
dense_rank() OVER(PARTITION BY ‘A’ ORDER BY SALARIO DESC) rank
from SALARIOS_FUNCIONARIOS)
where rank <= 10)
BEGIN
FOR I IN C_SAL LOOP
INSERT INTO MAIOR_SALARIO VALUES (I.ID,I.NOME,I.CARGO,I.SALARIO);
END LOOP;
commit;
END INSERE_SALARIOS;12 de novembro de 2008 às 1:21 pm #83661midyParticipante—
12 de novembro de 2008 às 10:58 pm #83685Leonardo LitzParticipanteSegue exemplo…..
declare
v_id number;
c number := 0;begin
for dd in (select nome_funcionario,sobrenome_funcionario,cargo,salario
from tabela
order by salario desc) loopc:= c + 1;
select nvl(max(ms.id),1)
into v_id
from maior_salario msinsert into maior_salario(id,nome,cargo,salario)
values(v_id,dd.nome_funcionario||’ ‘||dd.sobrenome_funcionario,dd.cargo,dd.salario);if(c > 5) then—sai do loop quando a passagem for a quinta
exit;
end if;end loop;
end;
Valeu Leonardo Litz
-
AutorPosts
- Você deve fazer login para responder a este tópico.