oracle 通过调用存储过程,得到数据集

在oracle中如何编写一个存储过程(有参数的哦)去取得数据集,如何调用这个存储过程??
最好有个具体的例子!

我也是初学者,不是什么高手,根据我的理解提出我的看法,仅供参考:
(1)函数function的参数必须都是in类型的,必须要有返回值
它可以被sql语句或者存储过程调用
例如:
--定义一个函数,返回传入的参数本身
create or replace function TestFunOne(argsOne in varchar2) return varchar2 is
resultStr varchar2(500);
begin
resultStr := argsOne;
return(resultStr);
end TestFunOne;

sql语句中可以这样用: update tableName t set t.columnName = TestFunOne('1')
存储过程中可以这样用:
create or replace procedure getNameByFincode(inputStr in varchar2,
resultStr out varchar2) is

begin
resultStr := TestFunOne(inputStr);
end getNameByFincode;

(2)java程序中一般是直接执行sql语句或者调用存储过程
java执行sql语句可以这样:
String sql="update tableName t set t.columnName = TestFunOne('1')";
stmt.executeUpdate(sql);

java中调用存储过程可以这样:
CallableStatement callStmt = connection.prepareCall("call getNameByFincode(?,?)");

以上都是最简单的例子,具体展开网上也都可以查阅,希望能解决你的问题O(∩_∩)O~
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-05
创建:
CREATE OR REPLACE PROCEDURE P_1(S_NO INT)
AS
S_AGE INT;
BEGIN
SELECT SAGE INTO S_AGE FROM STU WHERE SNO=S_NO;
DBMS_OUTPUT.PUT_LINE(S_AGE);
END P_1;

调用:
EXEC P_1(1);

查询学生表中学号为1的学生年龄追问

谢谢你!不过我要的是oracle的,不是sql的

追答

这就是oracle的、你没看出?
sql的过程局部变量是@开头的

追问

谢谢!我搞定了!

本回答被提问者和网友采纳
第2个回答  2012-03-22
是要返回一个结果集游标还是输出一个结果集,一楼的回答属于后者。能否再明确一下问题。追问

我是用来给birt报表调用的!所以返回结果集游标就可以了,已经解决了!谢谢!

oracle 通过调用存储过程,得到数据集
它可以被sql语句或者存储过程调用 例如:--定义一个函数,返回传入的参数本身 create or replace function TestFunOne(argsOne in varchar2) return varchar2 is resultStr varchar2(500);begin resultStr := argsOne;return(resultStr);end TestFunOne;sql语句中可以这样用: update tableName t set...

怎么在oracle存储过程中输出查询结果集?
如果是存储过程 要调用相应的存储过程 exec produre_name (参数) 执行才能输出结果 你也可以到网上查查看

C#调用oracle存储过程返回数据集
\/\/\/ \/\/\/ 执行存储过程 \/\/\/ \/\/\/ 存储过程名 \/\/\/ 存储过程参数 \/\/\/ DataSet结果中的表名 \/\/\/ <returns>DataSet<\/returns> public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName ) { using (OracleConnection connection = new...

Oracle执行\/调用存储过程
使用EXECUTE命令进行执行相对简单,只需在命令后面输入存储过程名称即可。让我们通过一个示例进行说明。实例:执行pro_insertDetp存储过程 首先,创建一个存储过程,用于向dept表中插入一条记录,代码如下:执行此命令:EXECUTE pro_insertDept;可以在PL\/SQL程序块中调用存储过程。例如,使用以下步骤:设置服务...

帮忙写个oracle 存储过程,可以返回表的所有列的结果集
与SQL Server的存储过程和函数均可以返回结果集不同的是,PL\/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。具体思路为:(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标...

oracle怎么把存储过程查询出来的结果集显示出来
create or replace procedure p_cnt(p_time in varchar2,---查询的条件 p_cur out SYS_REFCURSOR)---游标返回 IS v_sql varchar2(1000) :='';v_date varchar2(20);BEGIN v_date := replace(p_time, '-', '');---时间的格式转换 v_sql := 'select * from dapartment d ...

oracle存储过程里调用存储过程
如果已经存在一个存储过程A(参数);那么在存储过程B中可以直接通过:values := A(参数);即可实现调用。备注:values必须在初始化过程中进行定义如: values VARCHAR(30);并且此类型必须与A存储过程返回参数类型一致。

如何在Delphi中调用oracle的存储过程返回数据集
二.在delphi中利用AdoDataSet调用上述第一个存储过程 1.利用AdoConnection1连接数据库(驱动为 oracle Provider for OLE DB),并在连接字符串中加入这一节: PLSQLRSet=1; 如下所示:Provider=OraOLEDB.Oracle.1;Password=KXD;Persist Security Info=True;User ID=KXD;Data Source=TEST3;PLSQLRSet=1...

Oracle中存储过程相互调用问题
--存储过程调用 variable v_c1 REFCURSOR;variable v_c2 REFCURSOR;exec pkg_return_table.p_return_table1(1,:v_c1,:v_c2);print v_c1;print v_c2;--函数调用 select pkg_return_table.f_return_table()from dual;重点是定义游标变量,获取存储过程结果集,然后Open游标,就跟平常的游标一样...

oracle中的存储过程如何返回查询到的多个值?
oracle不是不能,而是采用的方法不同罢了。可以使用一下方法创建返回结果集的调用:SQL> create or replace package pkg_HelloWorld as 2 -- 定义ref cursor类型 3 type myrctype is ref cursor;4 --函数申明 5 function getHelloWorld return myrctype;6 end pkg_HelloWorld;Package ...

相似回答