oracle 通过调用存储过程,得到数据集
在oracle中如何编写一个存储过程(有参数的哦)去取得数据集,如何调用这个存储过程??最好有个具体的例子!...
在oracle中如何编写一个存储过程(有参数的哦)去取得数据集,如何调用这个存储过程??
最好有个具体的例子! 展开
最好有个具体的例子! 展开
3个回答
展开全部
我也是初学者,不是什么高手,根据我的理解提出我的看法,仅供参考:
(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)函数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~
展开全部
创建:
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的学生年龄
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的过程局部变量是@开头的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是要返回一个结果集游标还是输出一个结果集,一楼的回答属于后者。能否再明确一下问题。
追问
我是用来给birt报表调用的!所以返回结果集游标就可以了,已经解决了!谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询