本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
處理 Aurora Postgre 中過載的 Oracle 函數 SQL- 相容
由 Sumana Yanamandra 建立 (AWS)
環境:PoC 或試行 | 來源:Oracle 資料庫 | 目標:Aurora Postgre SQL- 相容 |
R 類型:Replatform | 工作負載:Oracle | 技術:資料庫;遷移 |
AWS 服務:Amazon Aurora |
Summary
您從內部部署 Oracle 資料庫遷移至 Amazon Aurora Postgre SQL-Compatible Edition 的程式碼可能包含過載的函數。這些函數具有相同的定義,也就是相同的函數名稱和相同的輸入 (IN
) 參數數目和資料類型,但資料類型或輸出 (OUT
) 參數數目可能會不同。
這些參數不相符可能會導致 Postgre 中的問題SQL,因為很難決定要執行哪個函數。此模式說明當您將資料庫程式碼遷移至 Aurora Postgre SQL-Compatible 時,如何處理過載的函數。
先決條件和限制
先決條件
Oracle 資料庫執行個體作為來源資料庫
將 Aurora Postgre SQL相容資料庫執行個體作為目標資料庫 (請參閱 Aurora 文件https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html的說明)
產品版本
Oracle 資料庫 9i 或更新版本
Oracle SQL開發人員版本 18.4.0.376
pgAdmin 4 個用戶端
Aurora Postgre SQL- 相容版本 11 或更新版本 (請參閱 Aurora 文件中的識別 Amazon Aurora Postgre 版本SQL)
工具
AWS 服務
Amazon Aurora Postgre SQL-Compatible Edition 是完全受管且ACID合規的關聯式資料庫引擎,可協助您設定、操作和擴展 PostgreSQL 部署。
其他工具
Oracle SQL 開發人員
是免費的整合開發環境,可在傳統和雲端部署的 SQL Oracle 資料庫中使用 。 pgAdmin
是 Postgre 的開放原始碼管理工具SQL。它提供圖形界面,可協助您建立、維護和使用資料庫物件。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
在 PostgreSQL 中建立具有一個輸入參數和一個輸出參數的函數。 | 下列範例說明在 Aurora Postgre SQL-Compatible
| 資料工程師,Aurora Postgre SQL- 相容 |
在 Postgre 中執行 函數SQL。 | 執行您在上一個步驟中建立的函數。
它應該顯示下列輸出。
| 資料工程師,Aurora Postgre SQL- 相容 |
任務 | 描述 | 所需的技能 |
---|---|---|
使用相同的函數名稱,在 Postgre 中建立過載函數SQL。 | 在 Aurora Postgre SQL-Compatible 中建立過載函數,該函數使用與先前函數相同的函數名稱。下列範例也命名為
| 資料工程師,Aurora Postgre SQL- 相容 |
在 Postgre 中執行 函數SQL。 | 當您執行此函數時,它會失敗並顯示下列錯誤訊息。
這是因為 Aurora Postgre SQL-Compatible 不支援函數直接超載。它無法識別要執行哪個函數,因為輸出參數的數量在函數的第二個版本中不同,雖然輸入參數相同。 | 資料工程師,Aurora Postgre SQL- 相容 |
任務 | 描述 | 所需的技能 |
---|---|---|
INOUT 新增至第一個輸出參數。 | 作為解決方法,透過將第一個輸出參數表示為 來修改函數程式碼
| 資料工程師,Aurora Postgre SQL- 相容 |
執行修訂的函數。 | 使用以下查詢執行您更新過的函數。您傳遞 null 值作為此函數的第二個引數,因為您宣告此參數為
現在已成功建立函數。
| 資料工程師,Aurora Postgre SQL- 相容 |
驗證結果。 | 確認具有過載函數的程式碼已成功轉換。 | 資料工程師,Aurora Postgre SQL- 相容 |
相關資源
使用 Amazon Aurora PostgreSQL (Aurora 文件)
Oracle 中的函數過載
(Oracle 文件) Postgre 中的函數過載SQL
(PostgreSQL 文件)