函數與過程相同,隻是函數返回一個值。
語法:CREATE [OR REPLACE] FUNCTION function_name [(parameter_name [IN | OUT | IN OUT] type[,…])]RETURN return_datatype {IS | AS} BEGIN < function_body > END [function_name];
在哪裏
- Function_name是函數的名稱。
- [OR REPLACE]允許我們修改一個現有的函數。
- 函數必須包含返回語句。
- RETURN子句指定我們要返回的數據類型。
- 使用AS關鍵字代替is,用於創建獨立的功能。
示例:創建表
創建表教師(
Id int不是null,
命名varchar (20)
年齡int不是null,
地址字符(25)
工資小數點(18,2)
主鍵(id)
);
現在讓我們在表中插入一些值
插入教師(id,姓名,年齡,地址,工資)
Values (1, ' ranjitha ', 34, ' bangalore ', 2000.00);
插入教師(id,姓名,年齡,地址,工資)
Values (2, ' sai ', 30, ' hyderabad ', 3000.00);
插入教師(id,姓名,年齡,地址,工資)
Values (3, ' shakthi ', 34, ' pune ', 2500.00);
插入教師(id,姓名,年齡,地址,工資)
Values (4, ' gayathri ', 36, ' bangalore ', 4000.00);
插入教師(id,姓名,年齡,地址,工資)
Values (5, ' vignesh ', 34, ' mumbai ', 4500.00);
從教師中選擇*
ID |
名字 |
年齡 |
地址 |
工資 |
1 |
Ranjitha |
34 |
班加羅爾 |
2000 |
2 |
賽 |
30. |
海德拉巴 |
2500 |
3. |
Shakthi |
34 |
浦那 |
3000 |
4 |
Gayathri |
36 |
班加羅爾 |
4000 |
5 |
Vignesh |
34 |
孟買 |
4500 |
RETURN number是total number(2):= 0;BEGIN SELECT count(*) into total FROM teachers;返回總;結束;/當我們執行上述代碼時,我們得到以下結果:函數創建。
調用函數
當我們創建一個函數時,我們提供了函數必須做什麼的定義。為了使用函數,我們應該調用函數來執行定義的任務。然後當程序調用時,被調用函數的程序控製被轉移。然後被調用的函數執行定義的任務,當return語句執行時,或者如果到達最後一個end語句,控製權將回到主程序。
例如:DECLARE number(2);BEGIN t:= totalteachers();dbms_output。put_line(“總沒有。教師:' || t);結束;/ Output: Total no。教師:5 PL/SQL程序順利完成。
PL/SQL遞歸函數
當子程序調用自己時,它被稱為遞歸調用,這個過程被稱為遞歸。例如:DECLARE num number;階乘數量;函數事實(x數字)返回數字是f數字;IF x=0 THEN f:= 1;ELSE f:= x * fact(x-1);如果;返回f;結束;BEGIN num:= 3; factorial := fact(num); dbms_output.put_line(' Factorial of '|| num || ' is ' || factorial); END; / Output: Factorial of 3 is 6 PL/SQL procedure successfully completed.