首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#中使用Oracle存储过程返回结果集

问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWND...办法: Oracle中可以使用游标(Cursor)对数据集进行操作,但在存储过程输出参数中直接使用Cursor错误,此时的Cursor应该是一个定义游标的关键字并非类型,所以先要定义一个包,在包中声明全局的自定义游标类型...创建一个名为pkg_products的包**/ create or replace package pkg_products is --定义一个公有的游标类型cursor_pdt --ref 可以在程序间传递结果集...--一个程序里打开游标变量,在另外的程序里处理数据 type cursor_pdt is ref cursor; --声明一个存储过程 ,游标类型参数为输出类型 procedure proc_GetAllProducts...6 cmd.CommandType = CommandType.StoredProcedure; 7 //定义参数,注意参数名必须与存储过程定义时一致

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JDBC实现调用Oracle存储过程

    (20) 而存储过程名称括号里面的输入和输出参数是没有指定类型大小的     begin       --select * into org from XX where xxx = id;      ...a.execute:使用这个方法可以返回一个或更多个结果集对象。 b.executeQuery:返回一个结果集。用于查询语句。 c.executeUpdate:返回受到影响的记录的数目。...(4)处理结果集对象。通过光标处理ResultSet对象。这个光标不是数据库中的光标。这个光标是一个指针指向结果集对象中的某一行数据。...);             //返回的参数(oracle.jdbc.OracleTypes.VARCHAR表示返回参数类型)             statement.registerOutParameter...statement.execute();             //拿到返回的值,我的存储过程的参数1是传入参数,2,3,4是传出参数             System.out.println(statement.getString

    1.2K20

    数据库常见的面试题大全

    缺点:移植性差 4、存储过程与函数的区别 存储过程 1、用于在数据库中完成特定的操作或者任务(如插入、删除等) 2、程序头部声明用procedure 3、程序头部声明时不需描述返回类型可以使用in/out.../in out 三种模式的参数 4、可作为一个独立的PL/SQL语句来执行 5、可以通过out/in out 返回零个或多个值 6、SQL语句(DML 或SELECT)中不可调用存储过程 函数 1、用于特定的数据...(如选择) 2、程序头部声明用function 3、程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 4、可以使用in/out/in out 三种模式的参数 5、不能独立执行...UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

    1.4K40

    Java面试之数据库面试题

    程序头部声明时不需描述返回类型 程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用in/out/in...out 三种模式的参数 可作为一个独立的PL/SQL语句来执行 不能独立执行,必须作为表达式的一部分调用 可以通过out/in out 返回零个或多个值 通过return语句返回一个值,且改值要与声明部分一致...,也可以是通过out类型的参数带出的变量 SQL语句(DML 或SELECT)中不可调用存储过程 SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

    1.5K20

    数据库经典面试题,都给你收集好了!!!

    /out/in out 三种模式的参数 4、可作为一个独立的PL/SQL语句来执行 5、可以通过out/in out 返回零个或多个值 6、SQL语句(DML 或SELECT)中不可调用存储过程...out 三种模式的参数 5、不能独立执行,必须作为表达式的一部分调用 6、通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量 7、SQL语句(DML...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

    1.6K30

    Java面试之数据库面试题

    程序头部声明时不需描述返回类型 程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用in/out/in...out 三种模式的参数 可作为一个独立的PL/SQL语句来执行 不能独立执行,必须作为表达式的一部分调用 可以通过out/in out 返回零个或多个值 通过return语句返回一个值,且改值要与声明部分一致...,也可以是通过out类型的参数带出的变量 SQL语句(DML 或SELECT)中不可调用存储过程 SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

    1.5K41

    Oracle-procedurecursor解读

    ---- procedure系列 Oracle存储过程和自定义函数 Oracle-procedure解读 ---- procedure概述 存储过程( Stored Procedure )是一组为了完成特定功能的...用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程是由流控制和 SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。...SYS_REFCURSOR 只能通过 OPEN 方法来打开和赋值 我们可以使用这种类似的游标来返回一个结果集: CREATE OR REPLACE procedure proc_test( checknum...in number, --每次返回的数据量 ref_cursor out sys_refcursor --返回的结果集,游标 ) as begin open ref_cursor...OUT sys_refcursor --返回的结果集,游标 ) AS t_tmp table_name%ROWTYPE; BEGIN OPEN ref_cursor FOR SELECT

    90720

    Java程序员的日常——存储过程知识普及

    存储过程是保存可以接受或返回用户提供参数的SQL语句集合。在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。...4 事务处理机制 在同时进行主从表以及夺标的数据维护和有效性验证时,存储过程比较方便,可以有效地利用SQL的事务处理机制。...5 分离设计编码与使用 使用存储过程,可以实现存储过程设计和编码工作分开进行,只要存储过程名、参数、及返回信息告诉编码人员即可。...6 (缺点)不易移植和修改 使用存储过程封装业务逻辑将限制应用程序的可移植性;另外,如果更改参数或者返回的数据以及类型,需要修改相关的代码,比较繁琐。...; 存储过程的参数列表有输入参数、输出参数、输入输出参数 函数的参数只有输入参数,最后会加上一个return返回值。

    1.5K80

    Oracle应用实战八(完结)——存储过程、函数+对象曹组

    游标 在写java程序中有结果集的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。...(重点) 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它...数据类型,…) return 数据类型 as|is 结果变量 数据类型;Begin Pl/sql程序体; return(结果变量);end[函数名]; 存储过程和存储函数的区别 一般来讲...,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。...但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。

    1.9K60

    oracle存储过程相关整理

    replace] procedure 存储过程名称 (输入参数或输出参数)]as 变量 Begin 执行主体 End; 二、IN, OUT , IN OUT 用来修饰参数。...三、执行存储过程方式: 1、Call 存储过程名称(参数); 2、Execute 存储过程名称(参数); 注意:在oracle 数据库中,call命令任何窗口都能使用,但是execute只能在命令窗口使用...3、在使用select….into….时必须保证数据库有该数据,否则报”no data found”异常 4、在存储过程中,别名不能和字段名相同,否则虽然编译能通过,但是运行结果会报错 五、存储过程基本语法...CALL FourthProc('22ff8102-95cd-4862-a2ec-d011eca75ef1','男') --案例五:返回结果集 --1.案例 create or replace procedure...:Test-》点击Start Debugger 按钮:开始执行存储过程-》点击run按钮存储过程直接执行到结束,返回如图2的结果Cursor->点击右上角的按钮,查看结果集:如图3所示。

    83910

    数据库常见面试题及答案(数据库面试常见问题)

    function 程序头部声明时不需描述返回类型 程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用...in/out/in out 三种模式的参数 可作为一个独立的PL/SQL语句来执行 不能独立执行,必须作为表达式的一部分调用 可以通过out/in out 返回零个或多个值 通过return语句返回一个值...,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量 SQL语句(DML 或SELECT)中不可调用存储过程 SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

    4.1K10

    oracle基本面试题_mongodb面试题

    函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3)....函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4). 在sql数据操纵语句中只能调用函数而不能调用存储过程 4....由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.要分两部分来写: create or replace...30. oracle中存储过程,游标和函数的区别 游标类似指针,游标可以执行多个不相关的操作.如果希望当产生了结果集后,对结果集中的数据进行多 种不相关的数据操作 函数可以理解函数是存储过程的一种...; 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值;两者都可以通过out参数返回值, 如果需要返回多个参数则建议使用存储过程;在sql数据操纵语句中只能调用函数而不能调用存储过程

    3.3K20

    老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用)

    这里参数有三种不同的形式 :in 类型、out类型还有 in 和out的混合类型: IN 类型:此类型是用于参数从外部传递给存储过程使用; OUT类型:此类型是存储过程执行过程中的返回值;...既有输入IN参数,也有输出OUT参数,输出是简单值(非列表) 创建一个存储过程  get_job_min_salary_proc,传入特定岗位的job_id,返回输出此岗位的最小薪酬min_salary...,也有输出OUT参数,输出是列表 创建一个存储过程 get_min_greater_proc,输入参数 最小薪酬,返回jobs表里最小薪酬不小于此参数的岗位集合。...callableStatement.registerOutParameter(2, OracleTypes.CURSOR); //4.执行语句 callableStatement.execute(); //返回的是结果集...(IN OUT) 创建一个存储过程 get_job_info ,传入job_id 返回 job_id ,返回的job_id 是输入的job_id 和对应的job_title 拼接而成。

    89330

    崔华:Oracle 里的哈希连接原理解析

    在施加了目标 SQL 中指定的谓词条件(如果有的话)后,得到的结果集中数据量较小的会被 Oracle 选为哈希连接的驱动结果集,这里我们假设 T1 所对应的结果集的数据量相对较小,记为 S;T2 所对应的结果集的数据量相对较大...按照 hash_value_1 的值把相应的 S 中的对应记录存储在不同 Hash Partition 的不同 Hash Bucket 里,同时和该记录存储在一起的还有该记录用 hash_func_2...,但它已经被写回到了磁盘上,则此时 Oracle就会按照上述 hash_value_1 的值把相应 B 中的对应记录也以 Hash Partition 的方式写回到磁盘上,同时和该记录存储在一起的还有该记录用...Sn 和 Bn,它们之中记录数较少的会被当作驱动结果集,然后 Oracle 会用这个驱动结果集的 Hash Bucket 里记录的 hash_value_2 来构建新的 Hash Table,另外一个记录数较大的会被当作被驱动结果集...连接条件的记录返回; 上述处理 Sn 和 Bn 的过程会一直持续下去,直到遍历完所有的 Sn 和 Bn 为止。

    1.4K50
    领券