初学者入门程序调用存储过程小结

2021-10-29 04:55:55 兴城星座网

学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下。(关于调用sqlserver的存储过程将在下次进行小结请关注)

一:无返回值的存储过程

存储过程为:

? create or replace procedure adddept(deptno number,dname varchar2,loc varchar2)

? as

? begin

? insert into dept values(deptno,dname,loc);

? end;

然后呢,在java里调用时就用下面的代码:

? public class TestProcedure {

? Connection conn=null;

? CallableStatement cstmt=null;

? PreparedStatement pstmt=null;

? String url=\"jdbc:oracle:thin:@localhost:1521:mydb\";

? String driver=\"acleDriver\";

? String name=\"\";

? public TestProcedure() {

? try{

? rName(driver);

? conn=tConnection(url,\"scott\",\"tiger\");

? cstmt=epareCall(\"{call adddept(?,?,?)}\");

? tInt(1,13);

? tString(2,\"间谍部2\");

? tString(3,\"ningbo2\");

? ecuteUpdate();

?

? intln(\"success\");

? }

? catch(Exception e){intStackTrace();}

? finally{

? ose();

? ose();

? }

? }

? }

dept表为oracle数据库方案scott中的一个表

二:有返回值的存储过程(非列表)

存储过程为:

CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS

BEGIN

SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;

END TESTB;

在java里调用时就用下面的代码:

package c;

public class TestProcedureTWO {

public TestProcedureTWO() {

}

public static void main(String[] args ){

String driver = \"acleDriver\";

String strUrl = \"jdbc:oracle:thin:@127.0.0.1:1521:hyq\";

Statement stmt = null;

ResultSet rs = null;

Connection conn = null;

try {

rName(driver);

conn = tConnection(strUrl, \" hyq \", \" hyq \");

CallableStatement proc = null;

proc = epareCall(\"{ call STB(?,?) }\");

tString(1, \"100\");

gisterOutParameter(2, RCHAR);

ecute();

String testPrint = tString(2);

intln(\"=testPrint=is=\"+testPrint);

}

catch (SQLException ex2) {

intStackTrace();

}

catch (Exception ex2) {

intStackTrace();

}

finally{

try {

if(rs != null){

ose();

if(stmt!=null){

ose();

}

if(conn!=null){

ose();

}

}

}

catch (SQLException ex1) {

}

}

}

}

}

注意,这里的tString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是tString(1),如果是第三个位置,就是tString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

三:返回列表

由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,

1, 建一个程序包。如下:

CREATE OR REPLACE PACKAGE TESTPACKAGE AS

TYPE Test_CURSOR IS REF CURSOR;

end TESTPACKAGE;

2,建立存储过程,存储过程为:

CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out st_CURSOR) IS

BEGIN

OPEN p_CURSOR FOR SELECT * FROM STTB;

END TESTC;

可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。

在java里调用时就用下面的代码:

package c;

import l.*;

import tputStream;

import iter;

import eparedStatement;

import sultSet;

import iver.*;

public class TestProcedureTHREE {

public TestProcedureTHREE() {

}

和各园区合作进行统借统贷服务 public static void main(String[] args ){

String driver = \"acleDriver\";

String strUrl = \"jdbc:oracle:thin:@127.0.0.1:1521:hyq\";

Statement stmt = null;

ResultSet rs = null;

Connection conn = null;

try {

rName(driver);

conn = tConnection(strUrl, \"hyq\", \"hyq\");

CallableStatement proc = null;

proc = epareCall(\"{ call stc(?) }\");

gisterOutParameter(1,RSOR);

ecute();

rs = (ResultSet)tObject(1);

while(xt())

{

intln(\"

\" + tString(1) + \"\"+tString(2)+\"\");

}

}

catch (SQLException ex2) {

intStackTrace();

}

catch (Exception ex2) {

intStackTrace();

}

finally{

try {

if(rs != null){

ose();

if(stmt!=null){

ose();

}

if(conn!=null){

ose();

}

}

}

catch (SQLException ex1) {

}

}

}

}

查看本文来源

昆明治疗早泄医院
深圳治疗白癜风医院费用
上海治白癜风哪家医院好
延展阅读
新地香港“NOVO LAND”第1A期已获批预售楼花仍须

论调网讯:7月6日,新地代理总经理陈汉麟表示,旗下屯门住宅区演进计划“NOVO LAND”第1A期已获批预售楼花同意书,最快下星期放上楼书及开放;还有单...

摩羯座2023.09.10
这4种花生最适合放冰箱冷冻,比雪糕更好吃,凉爽过夏不用慌

这两天真是阳光正好的日子,进去的烈阳让我们怕回去,很多人都自己家里面新立了很多的汽水和零食,就是为了都能随时随地都能舒爽。但是零食和汽...

摩羯座2023.09.06
衰退担忧便市场恐惧 投资者逃离几乎所有主要资产类别

只不过一周投资者逃离几乎所有主要资产类别,仅美股和美债从未遭遇大现有财力外流,零售商担忧货币政策紧缩将加剧世界各地主要世界银行陷入衰落...

摩羯座2023.09.03
看考场不是走过场,2022中考考场踩点注记,踩点前必看!

对于将要参与初高中的小伙伴们来说,到贡院“踩点”则是初高中之外的另一件大事了,“踩点”即出名贡院,那么出名贡院主要是出名哪些地方呢? 踩...

摩羯座2023.09.01
上海嘉定:“我嘉货栈”打造出“家门口的便民店”

便民店开到城里面村门口、以村居为单位创立集里面供应点……亦同,在武汉镇江区,为了让生活习惯战略物资保供“买得到”,各种不断创新对政府陆...

摩羯座2023.08.31
两只小男孩的错位狗生

都却说小狗不辩称家贫,但是网上的一只柯基可能才会创下你的认识。这只柯基小狗小狗多才多艺BMW,不论是在车库里还是在人行道上总能准确无误地停...

摩羯座2023.08.31
杨颖为什么能红?除了资本的背书,她本人也是万中无一的奇才!

知道是幸苦杨颖背后的企业了,他们找到这样一个人,较易吗? 要被选为预备队容量电影明星,首要的一条就是美貌 不要知道,美貌在娱乐界里头都是...

摩羯座2023.08.30
腰方肌阻滞可减轻针灸肾上腺切除术患者术后的疼痛并促进康复:一项随机对照试验

笔记:米勒之声 来源:PUMCH止痒大讲堂 本期介绍上海医院止痒科袁青、崔旭蕾等人于2021年11月在BMC Anesthesiology杂志刊载的论文“Transmuscular quadratus lumbor...

摩羯座2023.08.29
草鱼的正确吃法,除了煎煮油炸,还有除此以外爆鱼

的单爆鱼为 材料: 螃蟹为500g,小葱5钉,水少许,鲜肉1盆,生抽1盆,叔5片,食用油适总量。 调味料 汁: 混合物500g,红门3个,白皮1块,萝卜20颗左右...

摩羯座2023.08.28
吕梁政协书画院举办刘明宗先生书法作品展

6月27日,政协委员书画院“逸钱博学多才墨痕——陈穆宗先生书法杰作展”举行开展仪式。本次特展是向社会党的101华诞深情献礼,也是政协委员建设周...

摩羯座2023.08.28
3