Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PL/SQL फ़ंक्शन बनाना और कॉल करना

आप इसे पाइपलाइन फ़ंक्शन :

सबसे पहले आपको एक टेबल प्रकार की आवश्यकता होगी:

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

फिर, अपने कोड को एक पाइपलाइन फ़ंक्शन बनाएं:

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;

अब, आप इसे इस तरह कॉल/क्वेरी कर सकते हैं:

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. आईडी और न्यूनतम/अधिकतम तिथियों द्वारा बाइनरी वैरिएबल को समूहीकृत करना

  2. एक क्वेरी में एकाधिक टेबल, आकार और टेबलस्पेस की गणना (*) कैसे करें?

  3. .अगला JDBC डालने की समस्या

  4. अगर बी गलत हो जाता है तो ए को वापस रोल करें। स्प्रिंग बूट, jdbctemplate

  5. Oracle में तालिका को छोटा करें त्रुटियाँ प्राप्त कर रहा है