gpt4 book ai didi

java - 创建返回数据库实体的 oracle 过程

转载 作者:行者123 更新时间:2023-12-02 03:54:42 25 4
gpt4 key购买 nike

我目前正在开发两个 Java Web 应用程序。一种使用 PostgreSQL 数据库,另一种使用 Oracle 数据库。 IDE是Intellij,操作系统是Windows。使用 Postgres 应用程序,我们有许多存储过程来返回数据库实体,例如“顾客”。现在我试图在Oracle中做同样的事情,但似乎Oracle中的过程根本不一样。我什至无法创建一个过程,Intellij 在尝试创建过程时总是给我一些错误消息。 :-( 也许有人可以给我一个例子,说明如何创建一个简单的过程,该过程根据搜索掩码中的几个参数,从一个表返回数据库实体列表,例如“name”、“last_name”、“email”作为搜索参数?太棒了!!

最佳答案

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', 'AA@email.net' FROM DUAL UNION ALL
SELECT 'Bob', 'Bucket', 'BB@email.net' FROM DUAL UNION ALL
SELECT 'Charlie', 'Abbots', 'CA@email.net' FROM DUAL UNION ALL
SELECT 'Denis', 'Dobbs', 'DD@email.net' 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;

应该输出:

anonymous block completed
CUR
---
FIRST_NAME LAST_NAME EMAIL
---------- --------- ------------
Bob Bucket BB@email.net

替代测试:

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;
/

关于java - 创建返回数据库实体的 oracle 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35604439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com