Q
重載甲骨文
0
A
回答
1
因爲存儲過程/函數名稱是唯一的。 請參閱Oracle文檔:
命名過程和函數
因爲一個過程或函數存儲在數據庫中,它必須是 命名。這與其他存儲過程有所區別,並使應用程序可以調用它 。模式中的每個公開可視程序 或函數都必須具有唯一的名稱,並且名稱必須是 合法的PL/SQL標識符。
0
一個簡短的答案是 - 因爲文檔中說,獨立的子程序不能被重載:
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#i12352
限制超載
只有本地或打包的子程序,或類型的方法,可以重載 。您不能超載獨立子程序。
爲什麼?你需要問Oracle爲什麼以這種方式實現它
我的猜測是,每個獨立的子程序被視爲一個數據庫對象(你可以在ALL_OBJECT或USER_OBJECT視圖中找到它們,它們的類型是:PROCEDURE和FUNCTION),每個數據庫對象必須具有唯一的名稱,因此您不能創建兩個具有相同名稱的函數或過程。
1
獨立過程/函數是一個模式對象,它由類型和名稱的組合來標識。
你可能會認爲這是一個任意的設計決定。然而,與數據字典中的簡單對象標識符相比,重載函數和過程的好處很小,特別是在整個地方沒有空分量。
因爲sw工程最佳實踐(如關注點分離,數據封裝,可維護性)等原因,需要重載例程的應用程序無論如何都應該利用程序包範例。
注意: 模式類型提供了另一個選項來定義重載的方法。
相關問題
- 1. 甲骨文函數重載
- 2. 下載Adfm.jar甲骨文11
- 3. 甲骨文日期重疊
- 4. 與甲骨文
- 5. 在甲骨文
- 6. 在甲骨文
- 7. 甲骨文
- 8. 甲骨文,REGEXP_LIKE
- 9. 在甲骨文
- 10. 在甲骨文
- 11. 在甲骨文
- 12. 在甲骨文
- 13. 在甲骨文
- 14. 與甲骨文
- 15. 在甲骨文
- 16. 甲骨文asp.net
- 17. 甲骨文:Listagg
- 18. 與甲骨文
- 19. 在甲骨文
- 20. sp_generate_inserts甲骨文
- 21. 在甲骨文
- 22. 在甲骨文
- 23. 甲骨文
- 24. 在甲骨文
- 25. 在甲骨文
- 26. 在甲骨文
- 27. 在甲骨文
- 28. 在甲骨文
- 29. 在甲骨文
- 30. 在甲骨文