oracle - dBEAVER 7.3.3 如何执行oracle存储过程
问题描述
请你能帮我在 dBEAVER 中运行/执行 oracle 程序吗?这是您可以看到输入参数的块 在 此处输入图像描述
解决方案
带有 OUT 光标的过程
我发现无法使用光标输出参数执行过程并将其显示在结果网格中。因此,除了将游标绑定在匿名块中之外,我没有其他方法(然后对游标进行您需要的操作)。
CREATE PROCEDURE test_proc(
datemin DATE,
datemax DATE,
RES OUT sys_refcursor
)
AS
BEGIN
OPEN res
FOR SELECT datemin + LEVEL
FROM dual
CONNECT BY LEVEL < datemax - datemin;
END;
DECLARE
l_cur sys_refcursor;
l_datemin DATE;
l_datemax DATE;
l_date date;
BEGIN
l_datemin := to_date(:dmin, 'YYYY-MM-DD');
l_datemax := to_date(:dmax, 'YYYY-MM-DD');
-- execute the procedure
test_proc(l_datemin, l_datemax, l_cur);
-- do something with the cursor, here just print to output
loop
fetch l_cur into l_date;
exit when l_cur%notfound;
dbms_output.put_line(to_char(l_date, 'YYYY-MM-DD'));
end loop;
END;
函数返回游标
这种情况看起来更好,返回的光标可以显示在查询网格中并检查它的值(您可能会被问到在执行查询时阻止关闭光标的设置,选择保持光标向上的选项)。
create or replace function test_fun(
datemin DATE,
datemax DATE
) return sys_refcursor
AS
l_res sys_refcursor;
BEGIN
OPEN l_res
FOR SELECT datemin + LEVEL
FROM dual
CONNECT BY LEVEL < datemax - datemin;
RETURN l_res;
END;
SELECT
1 a,
'xyz' b,
test_fun(to_date(:dmin, 'YYYY-MM-DD'), to_date(:dmax, 'YYYY-MM-DD')) c
FROM dual;
推荐阅读
- python - Flask sqlachemy 处理多个过滤器
- python-3.x - 通过戏剧性运行后台任务不起作用
- python - 如何使用 python 将文件上传到 pCloud 文件夹?
- react-native - react-native-keyboard-aware-scroll-view 不在 Android 上滚动
- rust - 如何将大于 u8 的数字写入指针?
- python-asyncio - asyncio 类似线程的行为
- c++ - 为什么数据成员不继承钻石问题c ++
- javascript - 如何从表格数据中显示laravel中的搜索结果?
- android - 默认应用程序/小部件背景是黑色的,但现在是白色的?
- java - Keycloak:如何仅使用资源 url 和 access_token 授权客户端资源?