当前位置:首页 » 存储配置 » 游标返回的存储过程

游标返回的存储过程

发布时间: 2023-02-12 09:18:41

❶ 关于存储过程返回游标的处理

对游标进行遍历,获得游标中的数据,存放到结果集中,
呵呵,希望能有帮助,^_^

❷ Mysql 存储过程,获取使用游标查询的结果集

MySQL 存储过程中,使用游标查询,返回的是结果集时,如何查看调用存储过程输出结果呢?
解决方案:存储过程不返回数据,但它能创建和填充另一个表。所以在存储过程运行中创建临时表。该临时表将保存存储过程中生成的结果集,在遍历游标时,用insert保存每条数据到临时表中。后续调用时可以用select语句查询临时表中的存储过程运行结果。

以下有 三种方式 使用游标创建一个存储过程,统计某一部门下的员工信息

方法一:Loop循环

调用存储过程:

方法二:While 循环

调用存储过程:

方法三:REPEAT 循环

调用存储过程:

上述三种实现方法在测试过程中遇到下述问题。
调用存储过程查询临时表输出结果时,会发现多循环了一次,像这样:

解决方法:
在遍历游标查询结果时,先判断游标的结束标志(done) 是否是为1,如果不是1,则向临时表中插入数据。

❸ 在oracle数据库中,使用游标返回一个结果集的,用存储过程实现

create or replace procere OutCursor(op_Result out SAnalysis.Ref_Cursor) as
begin
Open op_Result for
select *
from 表名
where 条件语句
order by 排序
end;

❹ 如何在Java中调用一个返回游标的存储过程

import oracle.jdbc.*;
...
CallableStatement cstmt;
ResultSet cursor;
// Use a PL/SQL block to open the cursor
//Additional Oracle Type Extensions
cstmt = conn.prepareCall
("begin open ? for select ename from emp; end;";
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();
cursor = ((OracleCallableStatement)cstmt).getCursor(1);
// Use the cursor like a normal ResultSet
while (cursor.next ())
{System.out.println (cursor.getString(1));}

❺ 关于存储过程返回游标的错误

光有包头,没有包体,包里面有个游标,但是游戏只是声明了一个类型,也有在包体里面实现这个游标,在FILTER_DATA_PROCEDURE这个过程里面打开了游标,也没有关闭.建议你去学习了包的写法,游标的使用方法在来好好看看你自己写的

❻ c#中如何调用一个返回游标的存储过程

下面是我以前用的,应该还有好方法,只是我用了这一种。
这个为oracle的,其他的应该类似,把oracleClient这个东西换换,就可以看见说明了。
存储过程名:ProGetBookList
参数:s_Barcode(varchar),ResultCursor(游标)
-----
System.Data.OracleClient.OracleCommand Com = new System.Data.OracleClient.OracleCommand("ProGetBookList", connORCL );
Com.CommandType = CommandType.StoredProcere;
//创建存储过程参数
OracleParameter pBarcode=new OracleParameter("s_Barcode",OracleType.VarChar,50);
OracleParameter pCursor=new OracleParameter("ResultCursor",OracleType.Cursor,50);

//设置输出参数
pCursor.Direction=System.Data.ParameterDirection.Output;
//给输入参数赋值
pBarcode.Value=s_Barcode;
//添加参数
Com.Parameters.Add(pBarcode);

Com.Parameters.Add(pCursor);
//执行存储过程
Com.ExecuteNonQuery();
//为cousor类型返回参数创建读取器
OracleDataReader dr=(OracleDataReader)pCursor.Value;
string[] errorString;
//从读取器里将数据集得值取出,添加到集合(字符串类型)
System.Collections.ArrayList al_BookList=new ArrayList();
while (dr.Read()) //循环读取,从第一行开始,直到返回假结束
{
errorString=new string[16];
errorString[1]=dr.GetString(0).Trim(); //读第一个字段,取字符类型
//dr.GetBoolean(0); //bool类型
//dr.GetData(0); //日期类型
//其他的自己用查看OracleDataReader
}

❼ 如何在oracle存储过程中返回游标

1:首先你需要创建一个包,并定义你返回的游标的类型、存储过程 create or replace package TEST_PKG is -- Public type declarations type cur_emp is REF CURSOR; procere test_proc (v_empno in number, emps out cur_emp); end TEST_PKG; 2:然后你再创建包体 create or replace package body TEST_PKG is procere test_proc (v_empno in number, emps out cur_emp)asbeginopen emps for select * from emp where empno=7369; end test_proc; end TEST_PKG ; 3,通过JAVA调用 cstmt = conn.prepareCall("{call TEST_PKG .test_proc (?)}"); cstmt.registerOutParameter(1, OracleTypes.CURSOR); cstmt.execute();//获得结果集

❽ c#中怎么调用一个返回游标的存储过程

SqlConnection sqlconn=new SqlConnection("server=.;uid=sa;pwd=;database=Test");
sqlconn.Open();
SqlCommand sqlcmd=new SqlCommand();
sqlcmd.Connection=sqlconn;
sqlcmd.CommandText="dt_Inf";//指定存储过程名
sqlcmd.CommandType=CommandType.StoredProcere;
SqlDataReader reader=sqlcmd.ExecuteReader();
while(reader.Read())
{
listBox1.Items.Add( reader[0].ToString()+"|"+reader[1].ToString());
}

sqlconn.Close();

❾ Perl 如何处理 返回多个游标的DB2存储过程

一个游标(cursor)可以被看作指向结果集(a set of rows)中一行的指针(pointer)。游标每个时间点只能指向一行,但是可以根据需要指向结果集中其他的行。
例如:SELECT * FROM employees WHERE sex='M'会返回所有性别为男的雇员,在初始的时候,游标被放置在结果集中第一行的前面。使游标指向第一行,要执行FETCH。当游标指向结果集中一行的时候,可以对这行数据进行加工处理,要想得到下一行数据,要继续执行FETCH。FETCH操作可以重复执行,直到完成结果集中的所有行

在存储过程中使用游标,有如下几个步骤:
声明游标、打开游标、根据需要一次一行,讲游标指向的数据取到本地变量(local variables)中、结束时关闭游标

声明游标:
>>-DECLARE--cursor-name--CURSOR----+------------+--------->
'-WITH HOLD--'
>-----+--------------------------------+--------------------->
| .-TO CALLER--. |
'-WITH RETURN--+------------+--'
'-TO CLIENT--'
>----FOR--+-select-statement-+----------------------------><
'-statement-name---'
WITH RETURN子句用于将游标所定义的结果集传递给另一个存储过程或者应用(an application)
如果select语句中包含CURRENT DATE, CURRENT TIME和CURRENT TIMESTAMP,所有的FETCH语句都会返回相同的日期、时间、时间戳值,因为这些特定寄存器是在打开游标(OPEN CURSOR)的时候进行检查的

热点内容
java输入多行 发布:2025-07-14 13:59:05 浏览:109
asp数据库下载 发布:2025-07-14 13:30:36 浏览:218
shell脚本多判断条件 发布:2025-07-14 13:26:16 浏览:176
微信php开发框架 发布:2025-07-14 13:24:52 浏览:448
美国云服务器租用平台 发布:2025-07-14 12:37:21 浏览:908
android单选列表 发布:2025-07-14 12:20:06 浏览:727
刷红玉脚本 发布:2025-07-14 12:19:32 浏览:247
贪心算法会场安排 发布:2025-07-14 11:52:48 浏览:758
健康教育传播脚本 发布:2025-07-14 11:16:12 浏览:157
诛仙手游炼器有脚本吗 发布:2025-07-14 11:10:05 浏览:501