首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Oracle中执行函数X次并返回结果集

在Oracle中执行函数X次并返回结果集
EN

Stack Overflow用户
提问于 2014-12-26 18:52:19
回答 1查看 334关注 0票数 0

我有SQL Server背景,目前在Oracle数据库上工作,所以请容忍我与不同的术语或缺乏基本的Oracle知识。

在Oracle12中,我有一个函数"ITEM_NUMBER_TYPE_SQL.GET_NEXT(O_ERROR_MESSAGE,IO_ITEM_NO,I_ITEM_TYPE);“如果成功,它将返回true/false并填充"IO_ITEM_NO”变量/参数。如果发生错误,它将填充"O_ERROR_MESSAGE“变量/参数。到目前为止,我可以成功地执行这个函数,并通过使用返回下一个项目编号(即IO_ITEM_NO)的.Net应用程序获得值。.Net应用程序已经知道它需要多少项目编号,并在.Net应用程序端(而不是在oracle端)多次执行此函数,但由于.Net应用程序盒与oracle盒在地理上是分开的,因此它花费了太多时间(每次函数调用大约0.5秒,即使使用相同的连接)。

如何在Oracle端执行此函数X次,并将IO_ITEM_NO值存储到Oracle端的临时表/存储中,并使用一次调用在.Net端检索结果集?

执行此函数的用户将只有execute和read权限,并且不可能在Oracle端创建对象,除非它是execute/read权限的一部分。(例如,在SQL server中,具有读取权限的用户可以创建临时表,但不能创建永久表)

下面是一个伪代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE  v_bool BOOLEAN;
DECLARE O_ERROR_MESSAGE VARCHAR2(200);
DECLARE IO_ITEM_NO VARCHAR2(25);
DECLARE COUNT INT;
DECLARE TEMP_TABLE TABLE AS (ITEM_NO VARCHAR2(25));
BEGIN
                COUNT := 10; -- Means we need to execute ITEM_NUMBER_TYPE_SQL.GET_NEXT function 10 times
                FOR i IN 1 .. COUNT
                                v_bool := ITEM_NUMBER_TYPE_SQL.GET_NEXT(O_ERROR_MESSAGE, IO_ITEM_NO, 'ITEM');
                                IF(v_bool = TRUE) 
                                                THEN SELECT 1 INTO :v_Return FROM DUAL; 
                                                -- Following statement inserts the IO_ITEM_NO value which was returned from the function into the temp table
                                                INSERT INTO TEMP_TABLE (ITEM_NO)
                                                SELECT IO_ITEM_NO FROM DUAL; 
                                END IF;
                                IF(v_bool = FALSE) THEN 
                                                SELECT 0 INTO :v_Return FROM DUAL; 
                                                i := 10; -- Breaking the loop as error encountered
                                END IF;
                END LOOP;
                -- Finally send the resultset back
                SELECT ITEM_NO FROM TEMP_TABLE;
END;
EN

回答 1

Stack Overflow用户

发布于 2014-12-26 19:51:30

首先,Oracle与MSSQL非常不同。你应该捕捉到任何‘像在MSSQL中一样’的尝试,并检查‘这个问题应该如何用Oracle来处理’。最常见的错误是尝试使用MSSQL中的临时表。

其次,对单个任务进行多次调用在任何地方都是糟糕的决定。如果可能的话,应该避免这种情况。

一般来说,看起来甲骨文的pipelined functions就是为这项任务而设计的。这些函数可以逐行返回结果集,直到您的函数返回false为止。它应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from table(my_table_function(10));

function my_table_function(limit integer) is
begin
  while get_next(...) loop
    pipe row(some_data_returned);
  end loop;
end;

还有一件事:在甲骨文中,"O_ERROR_MESSAGE“是糟糕的设计。你应该使用异常来代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27660788

复制
相关文章
Flutter常用widget “Stack”
顾名思义:栈布局,有的文章说是像安卓里面的线性布局,不过这里我觉得更像帧布局吧。 构造方法:
坑吭吭
2018/08/31
6270
fastadmin如何在列表的操作中添加其他按钮
fastadmin默认的列表操作中只有编辑和删除按钮,如果我们需要添加其他按钮,需要先找到对应的js文件。我们需要在初始化表格中添加buutons属性,原来的js代码如下:
高久峰
2023/06/03
4.3K0
在 Flutter 中创建可拖动的浮动操作按钮[Flutter专题15]
Flutter 允许您使用FloatingActionButton小部件添加浮动操作按钮。但是,它不允许您拖动按钮。如果你想让它可拖动怎么办。本教程有一个示例,说明您需要做什么才能创建浮动操作按钮,只要它位于父小部件内,就可以将其拖动到屏幕周围的任何位置。
徐建国
2021/12/07
5.7K0
在 Flutter 中创建可拖动的浮动操作按钮[Flutter专题15]
博客添加浮动目录
一直都想给自己的博客添加一个浮动的目录,在网上也找也几个,从易用性方面都不是太理想,所以今天才有了想法自己去写一个插件 。
付威
2018/12/05
1.1K0
基于 Flutter + 百度人工智能 开发出的一款测颜值的 App
正常情况下,一个页面中,通过 floatingActionButton 选项,默认只能渲染一个浮动按钮。如果需要渲染多个浮动按钮,可以通过 ButtonBar 控件来实现,代码示例如下:
徐建国
2021/08/02
2.5K0
基于 Flutter + 百度人工智能 开发出的一款测颜值的 App
正常情况下,一个页面中,通过 floatingActionButton 选项,默认只能渲染一个浮动按钮。如果需要渲染多个浮动按钮,可以通过 ButtonBar 控件来实现,代码示例如下:
徐建国
2021/08/03
2.6K0
如何在 Flutter 中禁用默认的 Widget 飞溅效果
默认情况下,许多 Flutter Material Design 小部件在被选中时会显示飞溅效果。
徐建国
2021/08/09
2.4K0
flash中按钮添加链接打开网页
btn :按钮实例名; _blank:打开方式(新窗口打开) fn :函数名称;
2021/11/08
1.2K0
Android:最新版浮动按钮的制作
UI设计给我出了个难题:在一个界面上设计一个始终位于屏幕右下角的浮动按钮 翻阅好多博客(几乎都是几年前的):都是说要导入这么一个依赖 compile ‘com.getbase:floatingactionbutton:1.10.1’,结果发现放在2021年早已失效。 几经摸索,也没找到最新版Floatactionbutton的正确依赖。
zstar
2022/06/14
9980
Android:最新版浮动按钮的制作
QTableView 添加按钮
这里说一下怎么在QTableView添加一个按钮 效果是点击button弹出一个对话框。 看一下ButtonDelegate的代码 #ifndef BUTTONDELEGATE_H #define B
lpxxn
2018/01/31
2.5K0
QTableView 添加按钮
每日tips:快速给widget添加圆角
在flutter中如何给widget添加圆角呢? 直接在widget的外层包裹一个DecoratedBox 就可以了 DecoratedBox( decoration: BoxDecoration( color: Colors.blue, borderRadius: const BorderRadius.all(Radius.circular(16)), // alternatively, do this: // borderRadius: BorderRadius.c
用户1974410
2022/09/20
5010
【Flutter】Flutter 照片墙 ( Center 组件 | Wrap 组件 | ClipRRect 组件 | Stack 组件 | Positioned 组件 | 按钮组合组件 )
widthFactor ( 宽度因子 ) 和 heightFactor ( 高度因子 ) 用于控制该组件的宽高 , 类型为 double 浮点型 ;
韩曙亮
2023/03/29
8.4K0
【Flutter】Flutter 照片墙 ( Center 组件 | Wrap 组件 | ClipRRect 组件 | Stack 组件 | Positioned 组件 | 按钮组合组件 )
如何在系统中添加字体(添加字体到系统)
笔者最近在使用win10自带的OneNote笔记本记笔记的时候,发现笔者电脑中没有华文新魏这个字体,最开始以为是OneNote不带有这个字体,经过一段时间的收集资料后发现,是笔者电脑win10系统中不带有这个字体,现将有关概念和字体安装方法做一下记录。
全栈程序员站长
2022/08/01
4K0
如何在系统中添加字体(添加字体到系统)
winfrom如何在listview中添加控件
private Button btn = new Button(); private void Form1_Load(object sender, EventArgs e) { ListViewItem[] lvs = new ListViewItem[3]; lvs[0] = new ListViewItem(new string[] { "行1列1", "行1列2", "" }); l
码农阿宇
2018/04/18
2.6K0
如何在Hue中添加Spark Notebook
CDH集群中可以使用Hue访问Hive、Impala、HBase、Solr等,在Hue3.8版本后也提供了Notebook组件(支持R、Scala及python语言),但在CDH中Hue默认是没有启用Spark的Notebook,使用Notebook运行Spark代码则依赖Livy服务。在前面Fayson也介绍了《Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs》、《如何编译Livy并在非Kerberos环境的CDH集群中安装》、《如何通过Livy的RESTful API接口向非Kerberos环境的CDH集群提交作业》、《如何在Kerberos环境的CDH集群部署Livy》、《如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业》、《如何打包Livy和Zeppelin的Parcel包》和《如何在CM中使用Parcel包部署Livy及验证》,本篇文章Fayson主要介绍如何在Hue中添加Notebook组件并集成Spark。
Fayson
2018/11/16
6.8K1
低代码平台amis学习 四:一个表单添加多个按钮,不同按钮触发不同请求
当给表单上不同按钮都配置网络请求时,也需要用到api参数,不过需要把它配置到对应的按钮上,如下
冰霜
2023/02/24
2K0
低代码平台amis学习 四:一个表单添加多个按钮,不同按钮触发不同请求
7.如何在OpenLDAP中实现将一个用户添加到多个组
在前面的文章Fayson讲了《1.如何在CentOS6.5安装OpenLDAP并配置客户端》、《2.OpenLDAP集成SSH登录并使用SSSD同步用户》、《3.如何实现OpenLDAP的主主同步》、《4. 如何为Hive配置OpenLDAP认证》、《5.如何为Impala配置OpenLDAP认证》以及《6.如何为Hue配置OpenLDAP认证》。本篇文章主要介绍如何在OpenLDAP中将一个用户添加到多个组中。
Fayson
2018/03/29
4.8K0
点击加载更多

相似问题

如何在Rails路由中嵌入多个标签,如Stack Overflow

20

如何重建浮动按钮的Widget onpress?

20

如何在ListView中添加浮动按钮

13

如何在shinydashboard中添加浮动按钮

11

如何在PDF中添加浮动按钮?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文