我目前正在研究两个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返回一个类型 –