找回密码
 立即注册

QQ登录

只需一步,快速开始

feichunhuan

金牌服务用户

7

主题

35

帖子

200

积分

金牌服务用户

积分
200
feichunhuan
金牌服务用户   /  发表于:2024-4-12 11:26  /   查看:2222  /  回复:4
100金币
本帖最后由 feichunhuan 于 2024-4-12 14:19 编辑

你好,


我在数据在oracle数据库中,但是需要通过一定的程序处理,考虑用oracle里面的存储过程作为数据源来实现,请问:

1. Oracle DB中的存储过程在编写中需要注意什么
2. 如何授权,grant execute on xxx_prc to wynuser(该用户可以访问到oracle DB里面的数据,专门创建给Wyn使用的)
3. 如何在Wyn里面定义数据集,下图中如何才能看到
image.png477687987.png

最佳答案

查看完整内容

在Oracle数据库中要使用存储过程的话,正确的使用方法是使用游标返回结果集。 使用如下SQL创建一个存储过程: CREATE OR REPLACE PROCEDURE get_result_table_procedure (result_table OUT SYS_REFCURSOR)ISBEGIN OPEN result_table FOR SELECT * FROM your_table;END; 这个SQL创建了一个名为的get_result_table_procedure[/backcolor]存储过程,存储过程有一个参数result_table[/backcolor],它是一个OUT[/backcolor]参 ...

4 个回复

正序浏览
Eden.SunWyn认证
超级版主   /  发表于:2024-4-15 13:39:28
6#

您的问题解决就好,我先把您的帖子关闭了。有新的问题您在开新帖解决。
回复 使用道具 举报
feichunhuan
金牌服务用户   /  发表于:2024-4-15 08:49:19
5#
Javen 发表于 2024-4-12 16:32
在Oracle数据库中要使用存储过程的话,正确的使用方法是使用游标返回结果集。
使用如下SQL创建一个存储过 ...

多谢指导
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2024-4-12 16:59:22
4#
本帖最后由 Felix.Li 于 2024-5-11 14:27 编辑

您参考楼上老铁的方法试试呢。
回复 使用道具 举报
最佳答案
最佳答案
Javen
注册会员   /  发表于:2024-4-12 11:26:27
来自 3#
本帖最后由 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,它包含两列CONTRACTNAMEAMOUNT
直接查询这张表:

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中使用,使用页面如下:
image.png713374938.png
image.png131272582.png
image.png16072691.png
image.png362669371.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部