Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tạo và gọi các hàm PL / SQL

Bạn có thể đặt nó thành hàm pipelined :

trước tiên, bạn sẽ cần một loại bảng:

create or replace type result_tab as table of varchar2(32767);

Sau đó, đặt mã của bạn thành một hàm tổng hợp:

create or replace function your_func return result_tab PIPELINED is

rec employees_practice%rowtype;
sam taxObligations%rowtype;
socialsecurity number;
rentallowance number;
transportation number;
taxableincome number;
incometaxliability number;
netpay number;
total number;
totaldeductions number;

    begin
    for rec in (select * from employees_practice)
    loop
    socialsecurity:=(5.5/100)*(rec.salary);
    rentallowance:=(20/100)*(rec.salary);
    if(rec.Category='S') 
    then transportation:= 150; 
    else transportation:=100;
    end if;

taxableincome:=rec.Salary-socialsecurity+rentallowance+transportation;

for sam in (select * from taxObligations) 
loop
if(taxableincome between sam.Minincome and sam.Maxincome)
then incometaxliability:= sam.MinimumBracketTax + (taxableincome-sam.Minincome)*(sam.TaxBracketRate/100);
else incometaxliability:=null;
end if;
end loop;
netpay:= taxableincome-incometaxliability;
total:= rec.Salary + rentallowance + transportation;

totaldeductions:=socialsecurity + incometaxliability;

-- Here, I used PIPE ROW() to give an output in different format.
pipe row('what ever you had in your dbms_output command');

end loop; 

return;

end your_func;

Bây giờ, bạn có thể gọi / truy vấn nó như thế này:

select * from table(your_func)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có thể tự động mở khóa các bảng trong Oracle sau một thời gian nhất định?

  2. Sử dụng OracleParameter với C # TimeSpan - Literal không khớp

  3. Phát hiện, xóa các cột trống và cập nhật cơ sở dữ liệu trong sql, oracle

  4. PL / SQL ĐỂ LOOP IMPLICIT CURSOR

  5. Mã định danh không hợp lệ Oracle không hiểu chuỗi