本帖最后由 Javen 于 2024-4-12 16:39 编辑
在Oracle数据库中要使用存储过程的话,正确的使用方法是使用游标返回结果集。
使用如下SQL创建一个存储过程:
CREATE OR REPLACE PROCEDURE get_result_table_procedure (result_table OUT SYS_REFCURSOR) IS BEGIN OPEN result_table FOR SELECT * FROM your_table; END;
这个SQL创建了一个名为的get_result_table_procedure存储过程,存储过程有一个参数result_table,它是一个OUT参数,用于返回结果集。在存储过程的主体中,我们使用OPEN result_table FOR语句将查询结果集放入游标中。
我们可以自己手动修改这个存储过程中的SELECT * FROM your_table;语句,来处理相关业务,我们也可以在定义存储过程的时候传递参数。
我写了两个demo,我的数据库中有原始表AMOUNT,它包含两列CONTRACTNAME和AMOUNT。 直接查询这张表:
CREATE OR REPLACE PROCEDURE javen_test_procedure (result_table OUT SYS_REFCURSOR) IS BEGIN OPEN result_table FOR SELECT CONTRACTNAME, AMOUNT FROM AMOUNT; END;
对表中的数据进行过滤:
CREATE OR REPLACE PROCEDURE javen_test_procedure2 ( param IN NUMBER, result_table OUT SYS_REFCURSOR ) IS BEGIN OPEN result_table FOR SELECT CONTRACTNAME, AMOUNT FROM AMOUNT WHERE AMOUNT > param; END;
创建存储过程后就可以在Wyn中使用,使用页面如下: |