Procurar
Últimos assuntos
Top dos mais postadores
Nilton | ||||
pekisalto | ||||
Edward Phoenix | ||||
Michel Sosa | ||||
alexpfz | ||||
Paulo-Smith | ||||
Dj Nando Phoenix | ||||
Cesariolange | ||||
allanyo | ||||
Gabriel Padilha |
PL SQL ORACLE FUNÇOES
Página 1 de 1
PL SQL ORACLE FUNÇOES
Iae pessoal!...
Ninguem mais postando no forum,que está havendo?
Hum ja sei as provas do semestre passado abalou geral né?
Pois é até eu me abalei! :O
Mas agora vamos falar de uma coisa importante,ORACLE!...
PL SQL Funçoes,pra que serve as funçoes?
Bom o conceito é abrangente por todas as linguagens de programação que existem,esses objetos,ele trabalham como leva-e-tras voce envia uma informação ou apenas chama e ela retorna uma resposta,sempre vai retornar algo pra ser usado dentro de outra função,evento,procedures enfim....
Na pratica falamos desse geito:
---
CREATE OR REPLACE FUNCTION ANNUAL_SAL(P_ID EMPLOYEES.EMPLOYEE_ID%TYPE)
RETURN NUMBER
IS
V_SAL EMPLOYEES.SALARY%TYPE;
V_COMISSAO EMPLOYEES.COMMISSION_PCT%TYPE;
BEGIN
SELECT SALARY,COMMISSION_PCT
INTO V_SAL,V_COMISSAO
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_ID;
IF(V_COMISSAO IS NULL) THEN
RETURN (V_SAL * 12);
ELSE
RETURN ((V_SAL * 12)+(V_COMISSAO * V_SAL * 12));
END IF;
END ANNUAL_SAL;
----
Vamos desossar isso!
Primeira linha:
CREATE [OR REPLACE] FUNCTION NOME(PARAMETROS [IN OUT] TIPODEDADO)
Essa linha de codigo CRIA ou ATUALIZA uma função caso a mesma exista,o nome que ela ira se chamar e os parametros
podendo ser por referencia ou por valor IN(VALOR) OUT(REFERENCIA) o nome já em bastante intuitivo...(Valor ele recebe e é usado mas o valor atual nao eh alterado,Referencia ele recebe um valor pode ser alterado e ficara alterado,ou seja,faz com que essa variavel ocupe um endereço de memoria e vai sofrendo alteração conforme foi descrito no codigo ) o TIPODEDADO é um tipo que voce esta atribuindo para o parametro,como as vezes nao sabemos qual é o valor que algum campo da tabela está configurado entao podemos 'tipar' ele conforme com o da tabela usasse essa linha (pParametro TABELA.CAMPO%TYPE)....Simples nao!...
RETURN TIPODEDADO
Retorna algum tipo de dado numerico,string...enfim... (SEMPRE VAI EXISTIR EM FUNÇOES)..
V_SAL EMPLOYEES.SALARY%TYPE;
V_COMISSAO EMPLOYEES.COMMISSION_PCT%TYPE;
Como eu disse la em cima,declarei essas variaveis de acordo com o mesmo tipo de dado que o do campo...
SELECT SALARY,COMMISSION_PCT
INTO V_SAL,V_COMISSAO
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_ID;
Faz um select em SALARY e COMMISSION_PCT ( campos de tabela ) e guarda esse valor dentro de uma variavel,na qual,eu declarei la em cima...V_SAL ( recebe o salary) V_COMISSAO (recebe o commission_pct) deve ser na MESMA ORDEM!!!!...
Entao vai ficar selecionar salario e comissao de employees aonde a identificação do funcionario for igual ao do PARAMETRO RECEBIDO ou seja o P_ID que eu declarei la em cima tambem como parametro.
IF(V_COMISSAO IS NULL) THEN
RETURN (V_SAL * 12);
ELSE
RETURN ((V_SAL * 12)+(V_COMISSAO * V_SAL * 12));
END IF;
END ANNUAL_SAL;
Verifica se a variavel V_COMISSAO é nula,se for nula entao o funcionario nao tem comissao e efetua apenas o calculo do seu salario anual
e RETORNA o valor desse calculo,senao efetua outro calculo e TAMBEM RETORNA.
em seguida o END ANNUAL_SAL; termina a função.
--- ATRIBUINDO VALORES E TESTANDO
Bom depois que eu fiz a minha função eu compilo ela e utilizo com algum bloco anonimo como mostra aseguir:
DECLARE
V_ID EMPLOYEES.EMPLOYEE_ID%TYPE := 145;
BEGIN
DBMS_OUTPUT.PUT_LINE(TO_CHAR('ID: ' || V_ID || ' - ANNUAL SALARY = ' || ANNUAL_SAL(V_ID)));
END;
Crio uma variavel pra receber um valor,posso tambem fazer um prompt pro usuario digitar o ID do funcionario e guardar em V_ID
(&V_ID) <- prompt...
Depois do BEGIN ele tem uma saida de informação contendo o V_ID concatenado com uma string e em seguida a CHAMADA DA FUNCAO com o valor que ela retornou la em cima...
Resultado:
---
ID: 145 - ANNUAL SALARY = 235200
---
Fiz as contas e da isso mesmo!..
Bom pessoal é esse o conceito de funçoes,tendo essas informaçoes e sabendo usar as querys corretamente voce faz muita coisa!..
Vou ficando por aqui depois falamos sobre PROCEDURES as irmas das funçoes que Nao retornam! hehe!..
Abraços a todos..
PHOENIX
Fonte:
EU MESMO =D
Ninguem mais postando no forum,que está havendo?
Hum ja sei as provas do semestre passado abalou geral né?
Pois é até eu me abalei! :O
Mas agora vamos falar de uma coisa importante,ORACLE!...
PL SQL Funçoes,pra que serve as funçoes?
Bom o conceito é abrangente por todas as linguagens de programação que existem,esses objetos,ele trabalham como leva-e-tras voce envia uma informação ou apenas chama e ela retorna uma resposta,sempre vai retornar algo pra ser usado dentro de outra função,evento,procedures enfim....
Na pratica falamos desse geito:
---
CREATE OR REPLACE FUNCTION ANNUAL_SAL(P_ID EMPLOYEES.EMPLOYEE_ID%TYPE)
RETURN NUMBER
IS
V_SAL EMPLOYEES.SALARY%TYPE;
V_COMISSAO EMPLOYEES.COMMISSION_PCT%TYPE;
BEGIN
SELECT SALARY,COMMISSION_PCT
INTO V_SAL,V_COMISSAO
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_ID;
IF(V_COMISSAO IS NULL) THEN
RETURN (V_SAL * 12);
ELSE
RETURN ((V_SAL * 12)+(V_COMISSAO * V_SAL * 12));
END IF;
END ANNUAL_SAL;
----
Vamos desossar isso!
Primeira linha:
CREATE [OR REPLACE] FUNCTION NOME(PARAMETROS [IN OUT] TIPODEDADO)
Essa linha de codigo CRIA ou ATUALIZA uma função caso a mesma exista,o nome que ela ira se chamar e os parametros
podendo ser por referencia ou por valor IN(VALOR) OUT(REFERENCIA) o nome já em bastante intuitivo...(Valor ele recebe e é usado mas o valor atual nao eh alterado,Referencia ele recebe um valor pode ser alterado e ficara alterado,ou seja,faz com que essa variavel ocupe um endereço de memoria e vai sofrendo alteração conforme foi descrito no codigo ) o TIPODEDADO é um tipo que voce esta atribuindo para o parametro,como as vezes nao sabemos qual é o valor que algum campo da tabela está configurado entao podemos 'tipar' ele conforme com o da tabela usasse essa linha (pParametro TABELA.CAMPO%TYPE)....Simples nao!...
RETURN TIPODEDADO
Retorna algum tipo de dado numerico,string...enfim... (SEMPRE VAI EXISTIR EM FUNÇOES)..
V_SAL EMPLOYEES.SALARY%TYPE;
V_COMISSAO EMPLOYEES.COMMISSION_PCT%TYPE;
Como eu disse la em cima,declarei essas variaveis de acordo com o mesmo tipo de dado que o do campo...
SELECT SALARY,COMMISSION_PCT
INTO V_SAL,V_COMISSAO
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_ID;
Faz um select em SALARY e COMMISSION_PCT ( campos de tabela ) e guarda esse valor dentro de uma variavel,na qual,eu declarei la em cima...V_SAL ( recebe o salary) V_COMISSAO (recebe o commission_pct) deve ser na MESMA ORDEM!!!!...
Entao vai ficar selecionar salario e comissao de employees aonde a identificação do funcionario for igual ao do PARAMETRO RECEBIDO ou seja o P_ID que eu declarei la em cima tambem como parametro.
IF(V_COMISSAO IS NULL) THEN
RETURN (V_SAL * 12);
ELSE
RETURN ((V_SAL * 12)+(V_COMISSAO * V_SAL * 12));
END IF;
END ANNUAL_SAL;
Verifica se a variavel V_COMISSAO é nula,se for nula entao o funcionario nao tem comissao e efetua apenas o calculo do seu salario anual
e RETORNA o valor desse calculo,senao efetua outro calculo e TAMBEM RETORNA.
em seguida o END ANNUAL_SAL; termina a função.
--- ATRIBUINDO VALORES E TESTANDO
Bom depois que eu fiz a minha função eu compilo ela e utilizo com algum bloco anonimo como mostra aseguir:
DECLARE
V_ID EMPLOYEES.EMPLOYEE_ID%TYPE := 145;
BEGIN
DBMS_OUTPUT.PUT_LINE(TO_CHAR('ID: ' || V_ID || ' - ANNUAL SALARY = ' || ANNUAL_SAL(V_ID)));
END;
Crio uma variavel pra receber um valor,posso tambem fazer um prompt pro usuario digitar o ID do funcionario e guardar em V_ID
(&V_ID) <- prompt...
Depois do BEGIN ele tem uma saida de informação contendo o V_ID concatenado com uma string e em seguida a CHAMADA DA FUNCAO com o valor que ela retornou la em cima...
Resultado:
---
ID: 145 - ANNUAL SALARY = 235200
---
Fiz as contas e da isso mesmo!..
Bom pessoal é esse o conceito de funçoes,tendo essas informaçoes e sabendo usar as querys corretamente voce faz muita coisa!..
Vou ficando por aqui depois falamos sobre PROCEDURES as irmas das funçoes que Nao retornam! hehe!..
Abraços a todos..
PHOENIX
Fonte:
EU MESMO =D
Edward Phoenix- Mensagens : 34
Pontos : 86
Data de inscrição : 22/02/2010
Idade : 33
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
2011-11-10, 13:52 por allanyo
» matriz em c
2011-11-08, 19:02 por allanyo
» matriz em c
2011-11-08, 19:02 por allanyo
» [FUNÇÃO] C
2011-09-25, 15:33 por lucas150992
» Comprare Viagra. da mulher viagra generico
2011-08-04, 09:16 por Convidado