我目前正在研究兩個Java Web應用程序。一個使用PostgreSQL數據庫,另一個使用Oracle數據庫。 IDE是Intellij,OS是Windows。 使用Postgres應用程序,我們有很多存儲過程來返回數據庫實體,例如「顧客」。現在我正在嘗試在Oracle中做同樣的事情,但似乎Oracle中的過程並不相同。我甚至無法創建過程,Intellij在嘗試時總是給我幾條錯誤消息。 :-(也許有人可以舉例說明如何創建一個簡單的過程,該過程從一個表中返回一個db實體列表,具體取決於來自搜索掩碼的幾個參數,例如「name」,「last_name」,「email」 ?作爲搜索參數,這是偉大的!創建oracle程序返回db實體
0
A
回答
2
CREATE PROCEDURE get_Employees(
in_first_name IN EMPLOYEES.FIRST_NAME%TYPE,
in_last_name IN EMPLOYEES.LAST_NAME%TYPE,
in_email IN EMPLOYEES.EMAIL%TYPE,
out_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN OUT_CURSOR FOR
SELECT *
FROM Employees
WHERE (in_last_name IS NULL OR last_name = in_last_name)
AND (in_first_name IS NULL OR first_name = in_first_name)
AND (in_email IS NULL OR email = in_email);
END;
/
SHOW ERRORS;
測試:
CREATE TABLE Employees (First_name, last_name, email) AS
SELECT 'Alice', 'Abbots', '[email protected]' FROM DUAL UNION ALL
SELECT 'Bob', 'Bucket', '[email protected]' FROM DUAL UNION ALL
SELECT 'Charlie', 'Abbots', '[email protected]' FROM DUAL UNION ALL
SELECT 'Denis', 'Dobbs', '[email protected]' FROM DUAL;
運行:
VARIABLE cur REFCURSOR;
BEGIN
get_Employees(
in_first_name => 'Bob',
in_last_name => NULL,
in_email => NULL,
out_cursor => :cur
);
END;
/
PRINT cur;
瓦ICH應該輸出:
anonymous block completed
CUR
---
FIRST_NAME LAST_NAME EMAIL
---------- --------- ------------
Bob Bucket [email protected]
替代測試:
SET SERVEROUTPUT ON;
DECLARE
cur SYS_REFCURSOR;
rec EMPLOYEES%ROWTYPE;
BEGIN
get_Employees(
in_first_name => 'Bob',
in_last_name => NULL,
in_email => NULL,
out_cursor => cur
);
LOOP
FETCH cur INTO rec;
EXIT WHEN cur%NOTFOUND;
DBMS_OUTPUT.PUT(rec.first_name);
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT(rec.last_name);
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT_LINE(rec.email);
END LOOP;
CLOSE cur;
END;
/
相關問題
- 1. 創建實體並返回ID
- 2. Oracle ADF - 在父實體創建時創建子實體
- 3. 如何創建可以返回特定實體的Oracle存儲過程以及所有實體
- 4. 從現有DB創建實體
- 5. oracle程序返回整數
- 6. 使用Oracle Db實體框架4
- 7. 在oracle中創建程序
- 8. 創建Oracle包體
- 9. 使用程序創建程序包Oracle
- 10. 實體框架:從Oracle視圖創建實體
- 11. Oracle Repository創建實用程序無法連接到Oracle 11g企業版數據庫DB ORA-01882:時區區域
- 12. Oracle SQL創建函數或返回表的過程
- 13. 創建pl/sql返回Oracle中的過程列表
- 14. 在創建過程後返回oracle中ref遊標的結果
- 15. 實體框架:提供程序未返回providermanifest實例
- 16. DB回滾創建動作
- 17. 實體框架4.1爲從DB返回的實體對象添加一個GUID
- 18. 休眠不創建oracle中的表db
- 19. 爲Oracle DB創建特定表格
- 20. 提供程序未返回ProviderManifest實例Oracle 12c出錯
- 21. 從oracle程序獲取返回
- 22. XCode中的CoreData創建NSFetchRequest返回所有實體
- 23. MagicalRecord shouldImport在返回時創建空實體沒有
- 24. 組織服務創建實體返回「單元ID缺失」
- 25. Wordpress函數創建窗體返回False
- 26. JSON.NET實體返回的JsonConvert序列化「[]」
- 27. 實體SQL排序然後LINQ to實體GroupBy不返回IOrderedQueryable
- 28. 實體框架與返回實體的'獲取'存儲過程
- 29. 實用程序創建DBML
- 30. 使用Java程序創建Oracle方案
從這裏開始:https://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm,並要求更多問題如果需要 –
其實我已經做了,但仍然沒有線索如何實現我想要的... – Vortilion
您正在尋找一個函數http://www.techonthenet.com/oracle/functions.php返回一個類型 –