簡體   English   中英

Oracle SQL Developer-使用腳本創建函數

[英]Oracle SQL Developer - Create Function Using Script

[說明]
如果我想創建一個屬於模式'A'的函數,據我了解,我需要在模式'A'中創建包並實現功能。 (如果還有其他方法,請糾正我)。
如果我嘗試使用腳本文件創建函數(例如,New Gallery-> SQL Files(數據庫文件)以創建untitled.sql) ,我會感到困惑,因為該函數不屬於任何模式,並且將存儲在全球。

[題]
1)如何使用腳本創建屬於模式“ A”的功能?
2)全局存儲的函數無法訪問架構表,該如何解決?

在此處輸入圖片說明

我完全同意Ascalonian。 為了您的問題,我將提供有關如何使用SQL Developer的GUI工具創建函數的說明,這將生成一個腳本。

在許多方面,我寧願使用SQL * Plus。 就我的示例而言,我將使用標准的Oracle示例模式SCOTT。

問題1:如何使用腳本創建函數

注意:我展示了如何使用SQL Developer中的GUI工具創建此功能,並且它們會生成腳本

如果您已登錄數據庫用戶SCOTT,只需右鍵單擊用戶SCOTT的功能,然后選擇“新功能”

在此處輸入圖片說明

“創建功能”對話框將打開。 在此處輸入圖片說明

您只需修改名稱即可與您的命名約定和項目相對應。 選擇您的選項,然后選擇確定。 接下來,在代碼編輯器中,進一步修改函數以滿足您的需求: 在此處輸入圖片說明

這是我的最終草案。 選擇“編譯”: 在此處輸入圖片說明

現在,它顯示並顯示為SCOTT擁有的功能對象。 GUI工具會生成腳本功能,而不會限制SCOTT的所有權。 如果沒有資格,則默認情況下該功能由SCOTT擁有。

在此處輸入圖片說明

如果我在以SCOTT登錄的SQL Developer工作表中調用此函數,我們將在這里看到它: 在此處輸入圖片說明

通常,如果要與所有用戶共享對象,則標准方法是將execute授予public或創建public同義詞。 這是向公眾授予執行的示例:

在此處輸入圖片說明

然后,您可以與其他用戶一起檢查您的特權:

在此處輸入圖片說明

通常,使用此GUI工具很好,並且可以幫助您獲得正確的語法。 一段時間后,您可能會放棄此操作(相當緩慢且麻煩)。

問題2:全局存儲的函數無法訪問架構表,該如何解決?

有很多方法可以解決如何授予表上的選擇訪問權限。

以我的示例為例,可以將表上的選擇授予功能所有者SCOTT。

您可以這樣做:

GRANT SELECT ON OTHER_SCHEMA.PRECIOUS_TABLE TO SCOTT;

另一種常見的方法可能是將系統特權SELECT ANY TABLE授予SCOTT。 當然,應始終考慮安全性,並應遵循授予最少特權來完成任務的原則。

您不需要使用包來創建函數。 函數可以是獨立對象。

通過閱讀有關如何創建函數的Oracle文檔 ,可以找到用於創建函數的腳本。

要在特定架構中創建它,只需將架構名稱添加到函數名稱中,或以該其他用戶身份登錄。

注意:如果要在另一個架構中創建函數,則需要具有CREATE ANY PROCEDURE特權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM