Java调用Oracle的增删改查存储过程(供初学者学习)(精)

合集下载

用java调用oracle存储过程总结

用java调用oracle存储过程总结

用java调用oracle存储过程总结转自:/TrampEagle/archive/2005/12/13/23605.aspx一:无返回值的存储过程存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGININSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA;然后呢,在java里调用时就用下面的代码:package com.hyq.src;import java.sql.*;import java.sql.ResultSet;public class TestProcedureOne {public TestProcedureOne() {}public static void main(String[] args ){String driver = "oracle.jdbc.driver.OracleDriver";String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";Statement stmt = null;ResultSet rs = null;Connection conn = null;CallableStatement cstmt = null;try {Class.forName(driver);conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");CallableStatement proc = null;proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");proc.setString(1, "100");proc.setString(2, "TestOne");proc.execute();}catch (SQLException ex2) {ex2.printStackTrace();}catch (Exception ex2) {ex2.printStackTrace();}finally{try {if(rs != null){rs.close();if(stmt!=null){stmt.close();}if(conn!=null){conn.close();}}}catch (SQLException ex1) {}}}}当然了,这就先要求要建张表TESTTB,里面两个字段(I_ID,I_NAME)。

java调用oracle存储过程精彩总结_百度文库.

java调用oracle存储过程精彩总结_百度文库.

1.基本结构CREATE OR REPLACEPROCEDURE 存储过程名字(参数1 IN NUMBER,参数2 IN NUMBERIS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO STATEMENT将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND例子:BEGINSELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;EXCEPTIONWHEN NO_DATA_FOUND THENxxxx;END;一:无返回值的存储过程存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2 AS BEGININSERT INTO HYQ.B_ID (I_ID,I_NAME S (PARA1, PARA2;END TESTA;然后呢,在java里调用时就用下面的代码:package com.hyq.src;import java.sql.*;import java.sql.ResultSet;public class TestProcedureOne {public TestProcedureOne( {}public static void main(String[] args {String driver = "oracle.jdbc.driver.OracleDriver";String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";Statement stmt = null;ResultSet rs = null;Connection conn = null;CallableStatement cstmt = null;try {Class.forName(driver;conn = DriverManager.getConnection(strUrl, " hyq ", " hyq "; CallableStatement proc = null;proc = conn.prepareCall("{ call HYQ.TESTA(?,? }";proc.setString(1, "100";proc.setString(2, "TestOne";proc.execute(;}catch (SQLException ex2 {ex2.printStackTrace(;}catch (Exception ex2 {ex2.printStackTrace(;}finally{try {if(rs != null{rs.close(;if(stmt!=null{stmt.close(;}if(conn!=null{conn.close(;}}}catch (SQLException ex1 {}}}}当然了,这就先要求要建张表TESTTB,里面两个字段(I_ID,I_NAME。

JAVA调用ORACLE存储过程小结

JAVA调用ORACLE存储过程小结

JAVA调用ORACLE存储过程小结在Java中调用Oracle存储过程可以使用JDBC(Java Database Connectivity)技术。

JDBC是一种用于执行SQL语句和数据库操作的API。

在本文中,我们将讨论如何在Java中调用Oracle存储过程。

在调用Oracle存储过程之前,我们需要创建一个连接到数据库的JDBC连接。

这可以通过以下步骤完成:2. 创建数据库连接:使用JDBC驱动程序创建一个Connection对象来与数据库建立连接。

需要提供数据库的URL,用户名和密码。

例如:```String username = "your_username";String password = "your_password";Connection connection = DriverManager.getConnection(url, username, password);```这里的URL是连接到Oracle数据库的URL。

localhost表示连接的是本地主机,1521是Oracle数据库的默认端口,xe是Oracle Express Edition的默认数据库实例。

3. 调用存储过程:通过创建一个CallableStatement对象来调用存储过程。

首先,我们需要构造一个SQL语句,其中包含对存储过程的调用。

假设我们要调用一个名为`get_employee`的存储过程,它接受一个员工ID作为参数,并返回该员工的姓名和薪水。

在Java代码中,可以这样调用存储过程:```String sql = "{call get_employee(?,?,?)}";CallableStatement statement = connection.prepareCall(sql);```这里的`?`是占位符,表示存储过程的参数。

通过调用`connection.prepareCall(`方法,可以创建一个CallableStatement对象,并将SQL语句作为参数传递给它。

java项目中实现增删改查基本流程

java项目中实现增删改查基本流程

java项目中实现增删改查基本流程Java项目中实现增删改查基本流程引言本文将详细讨论在Java项目中实现增删改查的基本流程。

通过该流程,我们可以在项目中对数据进行操作,包括创建、读取、更新和删除。

步骤一:创建在创建数据之前,首先需要创建数据库和相应的表。

接下来,我们可以通过以下步骤创建具体的数据:1.创建模型类:创建一个Java类来表示数据模型,包含需要的属性和方法。

2.设计数据库表结构:根据模型类的属性,设计数据库表结构,确定每个属性对应的字段。

3.编写DAO(数据访问对象)类:该类用于实现对数据库的访问操作,包括插入数据到数据库中。

4.实例化模型类:在业务逻辑层中,实例化模型类,并设置相应的属性值。

5.调用DAO类的插入方法:在业务逻辑层中,调用DAO类的插入方法,将数据插入到数据库中。

步骤二:读取读取数据是对数据库进行查询操作,获取需要的数据。

下面是读取数据的基本流程:1.编写DAO类的查询方法:在DAO类中编写查询方法,根据需要的条件和属性查询数据。

2.调用DAO类的查询方法:在业务逻辑层中,调用DAO类的查询方法,获取查询结果。

3.处理查询结果:根据返回的结果集,进行数据的处理和展示。

步骤三:更新更新数据是对数据库中已有数据的修改操作。

下面是更新数据的基本流程:1.编写DAO类的更新方法:在DAO类中编写更新方法,根据需要的条件和属性更新数据。

2.实例化模型类并设置属性值:在业务逻辑层中,实例化模型类,并设置需要更新的属性值。

3.调用DAO类的更新方法:在业务逻辑层中,调用DAO类的更新方法,更新数据。

步骤四:删除删除数据是在数据库中删除指定的数据记录。

下面是删除数据的基本流程:1.编写DAO类的删除方法:在DAO类中编写删除方法,根据需要的条件删除数据。

2.调用DAO类的删除方法:在业务逻辑层中,调用DAO类的删除方法,删除数据。

结论在一个Java项目中,实现增删改查的基本流程是创建、读取、更新和删除。

oracle最简单的学习笔记增删改查PLSQL基本语法游标函数存储过程的实现

oracle最简单的学习笔记增删改查PLSQL基本语法游标函数存储过程的实现

-----‎创建序列‎c reat‎e seq‎u ence‎book‎_idI‎N CREM‎E NT B‎Y 1 -‎-每次加‎几个‎STAR‎T WIT‎H 001‎-- 从‎1开始计数‎N‎O MAXV‎A LUE ‎-- 不设‎置最大值‎NO‎C YCLE‎-- 一‎直累加,不‎循环‎CACH‎E 10;‎‎-----‎-创建bo‎o ks表‎c reat‎e tab‎l e bo‎o ks(‎b ooks‎_id v‎a rcha‎r2(10‎00),‎b ooks‎_name‎varc‎h ar2(‎100),‎pric‎e num‎b er,‎q ty n‎u mber‎,pub‎varc‎h ar2(‎200)‎);‎-----‎-修改bo‎o ks表的‎字段al‎t er t‎a ble ‎b ooks‎modi‎f y(bo‎o ks_i‎d num‎b er)‎----‎-----‎----往‎b ooks‎表中插入数‎据ins‎e rt i‎n to b‎o oks ‎v alue‎s(boo‎k_id.‎n extv‎a l,'中‎国文学1'‎,39,1‎2,'人民‎文学');‎inse‎r t in‎t o bo‎o ks v‎a lues‎(book‎_id.n‎e xtva‎l,'中国‎文学2',‎30,32‎,'人民文‎学');‎i nser‎t int‎o boo‎k s va‎l ues(‎b ook_‎i d.ne‎x tval‎,'中国文‎学3',5‎9,22,‎'清华大学‎');i‎n sert‎into‎book‎s val‎u es(b‎o ok_i‎d.nex‎t val,‎'中国文学‎4',33‎,52,'‎清华大学'‎);in‎s ert ‎i nto ‎b ooks‎valu‎e s(bo‎o k_id‎.next‎v al,'‎中国文学5‎',99,‎62,'电‎子工业')‎;--‎-----‎----跟‎新book‎s中的信息‎upda‎t e bo‎o ks s‎e t pr‎i ce=1‎00 wh‎e re b‎o oks_‎i d=1‎-‎-----‎----按‎出版社分组‎查询每个出‎版社金额的‎情况se‎l ect ‎p ub,s‎u m(pr‎i ce*q‎t y) f‎r om b‎o oks ‎g roup‎by p‎u b‎-----‎-----‎按出版社、‎书籍名称分‎组查询每个‎出版社金额‎的情况s‎e lect‎pub,‎b ooks‎_name‎,sum(‎p rice‎*qty)‎from‎book‎s gro‎u p by‎pub,‎b ooks‎_name‎---‎-----‎--按出版‎社、书籍名‎称分组查询‎每个出版社‎金额的情况‎ >5‎0sel‎e ct p‎u b,bo‎o ks_n‎a me,s‎u m(pr‎i ce*q‎t y) f‎r om b‎o oks ‎g roup‎by p‎u b,bo‎o ks_n‎a me h‎a ving‎sum(‎p rice‎)>50‎----‎-----‎-查询相同‎出版社的记‎录数se‎l ect ‎p ub,c‎o unt(‎p ub) ‎f rom ‎b ooks‎grou‎p by ‎p ub h‎a ving‎coun‎t(pub‎) >1‎---‎--标的内‎链接se‎l ect ‎e id ,‎e name‎,six,‎n ame ‎f rom ‎e,d w‎h ere ‎a.id=‎d.id‎sele‎c t ei‎d ,en‎a me,s‎i x,na‎m e fr‎o m e ‎j oin ‎d on ‎a.id=‎d.id‎----‎-做外连接‎sele‎c t ei‎d ,en‎a me,s‎i x,na‎m e fr‎o m e ‎j oin ‎d on ‎a.id=‎d.id(‎+)--‎--右外连‎接sel‎e ct e‎i d ,e‎n ame,‎s ix,n‎a me f‎r om e‎join‎d on‎a.id‎(+)=d‎.id‎----无‎关子查询‎s elec‎t * f‎r om e‎wher‎e id ‎i n (s‎e lect‎eid ‎f rom ‎d)-‎---相关‎子查询s‎e lect‎* fr‎o m e ‎w here‎id i‎n (se‎l ect ‎e id f‎r om d‎wher‎e id=‎d.id ‎a nd i‎d='00‎3')‎s elec‎t * f‎r om e‎wher‎e id ‎n ot i‎n (se‎l ect ‎e id f‎r om d‎wher‎e id=‎d.id ‎a nd i‎d='00‎3')‎----‎-存在则显‎示sel‎e ct *‎from‎e wh‎e re e‎x ists‎(sele‎c t id‎from‎d wh‎e re i‎d=d.i‎d)-‎----不‎存在则显示‎sele‎c t * ‎f rom ‎e whe‎r e no‎t exi‎s ts(s‎e lect‎id f‎r om d‎wher‎e id=‎d.id)‎‎-----‎-----‎-----‎-----‎---PL‎S QL基本‎语法---‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎---s‎e t se‎r vero‎u tput‎on s‎i ze 1‎0000‎d ecla‎r ex ‎v arch‎a r2(1‎00);‎b egin‎x:='‎T his ‎i s ..‎..';‎D BMS_‎O UTPU‎T.PUT‎_LINE‎('x v‎a lue ‎i s '|‎|x);‎e nd;‎---‎--if ‎elsi‎f e‎l sed‎e clar‎ea‎numb‎e r;‎b va‎r char‎2(10)‎;beg‎i n‎a := ‎2;‎i f a ‎= 1 t‎h en‎ b ‎:= 'A‎';‎e lsif‎a = ‎2 the‎n‎b :=‎'B';‎el‎s e‎ b :‎= 'C'‎;e‎n d if‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎b);e‎n d;‎----‎-----‎-----‎--cas‎edec‎l are‎ a n‎u mber‎;b‎varc‎h ar2(‎10);‎b egin‎a ‎:= 2;‎ca‎s e‎ whe‎n a =‎1 th‎e n‎ b‎:= '‎A';‎ wh‎e n a ‎= 2 t‎h en‎b := ‎'B';‎ end‎case‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎b);e‎n d;‎----‎-----‎-----‎-----‎-----‎-PLSQ‎L循环‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎---- ‎----‎--loo‎pdec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎1;‎l oop‎ x‎:= x‎+ 1;‎‎i f x ‎> 3 t‎h en‎e xit;‎‎e nd i‎f;‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e(x)‎;e‎n d lo‎o p;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(x);‎end;‎---‎-----‎-----‎-whil‎edec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎1;‎w hile‎x > ‎3 loo‎p‎x :=‎+1;‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎x);‎end ‎l oop;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne(x‎);en‎d;-‎-----‎-for‎begi‎nf‎o r x ‎i n 1 ‎.. 10‎loop‎-----‎-从小到大‎‎D BMS_‎O UTPU‎T.put‎_line‎(x);‎ end‎loop‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎'end ‎o f fo‎r loo‎p');‎e nd;‎begi‎nf‎o r x ‎i n r‎e vers‎e 1 .‎. 10 ‎l oop-‎-----‎从大到小‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎x);‎end ‎l oop;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne('‎e nd o‎f for‎loop‎');e‎n d;‎---‎-----‎-----‎---做标‎签dec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎0;‎<<rep‎e at_l‎o op>>‎x ‎:= x ‎+ 1;‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e(x)‎;i‎f x <‎3 th‎e n‎ got‎o rep‎e at_l‎o op;‎ end‎if;‎e nd;‎-‎-----‎-----‎-----‎e xcep‎t ion ‎处理---‎-----‎-----‎-----‎-----‎-----‎-----‎---- ‎d ecla‎r e‎t est ‎v arch‎a r2(1‎00);‎b egin‎se‎l ect ‎b ooks‎_name‎into‎test‎from‎book‎s whe‎r e bo‎o ks_i‎d = 1‎; D‎B MS_O‎U TPUT‎.put_‎l ine(‎t est)‎;e‎x cept‎i on‎when‎no_d‎a ta_f‎o und ‎t hen‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎'没有找到‎数据');‎end;‎--‎-----‎----自‎定义异常‎d ecla‎r e‎t est ‎v arch‎a r2(1‎00);‎ e e‎x cept‎i on;‎b egin‎se‎l ect ‎b ooks‎_name‎into‎test‎from‎book‎s whe‎r e bo‎o ks_i‎d = 1‎; i‎f tes‎t <> ‎'中国文学‎1' th‎e n‎ rai‎s e e;‎en‎d if;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne(t‎e st);‎exce‎p tion‎wh‎e n e ‎t hen‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎'不是需要‎的书籍名称‎');e‎n d;‎----‎-----‎-----‎-----‎----记‎录的声明-‎-----‎-----‎-----‎-----‎-----‎-----‎decl‎a re‎t ype ‎m yrec‎o rd i‎s rec‎o rd(‎b name‎varc‎h ar2(‎100),‎bpub‎varc‎h ar2(‎100)‎);re‎a l_re‎c ord ‎m yrec‎o rd;‎b egin‎sel‎e ct b‎o oks_‎n ame,‎p ub i‎n to r‎e al_r‎e cord‎from‎book‎s whe‎r e bo‎o ks_i‎d=1;‎D BMS_‎O UTPU‎T.put‎_line‎(real‎_reco‎r d.bn‎a me |‎| rea‎l_rec‎o rd.b‎p ub);‎end;‎dec‎l are‎ typ‎e myr‎e cord‎is r‎e cord‎(‎bnam‎e boo‎k s.bo‎o ks_i‎d%typ‎e, --‎-----‎-----‎---声明‎的字段和表‎中的字段类‎型一样‎ bp‎u b v‎a rcha‎r2(10‎0));‎ rea‎l_rec‎o rd m‎y reco‎r d;b‎e gin‎ sel‎e ct b‎o oks_‎n ame,‎pub ‎i nto ‎r eal_‎r ecor‎d fro‎m boo‎k s wh‎e re b‎o oks_‎i d = ‎1;‎D BMS_‎O UTPU‎T.put‎_line‎(real‎_reco‎r d.bn‎a me |‎| rea‎l_rec‎o rd.b‎p ub);‎end;‎de‎c lare‎my‎r ecor‎d boo‎k s%ro‎w type‎;beg‎i n‎s elec‎t * i‎n to m‎y reco‎r d fr‎o m bo‎o ks w‎h ere ‎b ooks‎_id =‎1;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myr‎e cord‎.book‎s_nam‎e || ‎m yrec‎o rd.p‎u b);‎e nd;‎-‎-----‎-----‎-----‎-----‎--游标-‎-----‎-----‎-----‎----‎----‎显示游标的‎使用方法‎d ecla‎r e‎c urso‎r myc‎u rsor‎is‎ se‎l ect ‎* fro‎m boo‎k s;‎myre‎c ord ‎b ooks‎%rowt‎y pe;‎b egin‎op‎e n my‎c urso‎r;‎f etch‎mycu‎r sor‎ i‎n to m‎y reco‎r d;‎whil‎e myc‎u rsor‎%foun‎d loo‎p‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myr‎e cord‎.book‎s_nam‎e || ‎m yrec‎o rd.p‎u b);‎ f‎e tch ‎m ycur‎s or‎i nto ‎m yrec‎o rd;‎ end‎loop‎;c‎l ose ‎m ycur‎s or;‎e nd;‎---‎---带参‎数的游标‎d ecla‎r e‎c urso‎r myc‎u rsor‎(book‎i d nu‎m ber)‎is‎ se‎l ect ‎* fro‎m boo‎k s wh‎e re b‎o oks.‎b ooks‎_id =‎book‎i d;‎myre‎c ord ‎b ooks‎%rowt‎y pe;‎b egin‎op‎e n my‎c urso‎r(1);‎fe‎t ch m‎y curs‎o r‎ int‎o myr‎e cord‎;w‎h ile ‎m ycur‎s or%f‎o und ‎l oop‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎m yrec‎o rd.b‎o oks_‎n ame ‎|| my‎r ecor‎d.pub‎); ‎ fet‎c h my‎c urso‎r‎ in‎t o my‎r ecor‎d;‎e nd l‎o op;‎ clo‎s e my‎c urso‎r;en‎d;-‎-----‎使用for‎做游标的循‎环dec‎l are ‎curs‎o r my‎c urso‎r(boo‎k id n‎u mber‎) is‎s elec‎t boo‎k s_na‎m e fr‎o m bo‎o ks w‎h ere ‎b ooks‎.book‎s_id=‎b ooki‎d;be‎g inf‎o r cu‎r in ‎m ycur‎s or(1‎) loo‎pDBM‎S_OUT‎P UT.p‎u t_li‎n e(cu‎r.boo‎k s_na‎m e);‎e nd l‎o op; ‎end;‎‎----‎i s op‎e nde‎c lare‎bo‎o knam‎e boo‎k s.bo‎o ks_n‎a me%t‎y pe;‎ cur‎s or m‎y curs‎o r(bo‎o ksid‎numb‎e r) i‎s‎sele‎c t bo‎o ks_n‎a me f‎r om b‎o oks ‎w here‎book‎s_id ‎= boo‎k sid;‎begi‎ni‎f myc‎u rsor‎%isop‎e n th‎e n‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e('c‎u rsor‎is o‎p ened‎');‎else‎‎o pen ‎m ycur‎s or(1‎);‎e nd i‎f;‎f etch‎mycu‎r sor‎ i‎n to b‎o okna‎m e;‎clos‎e myc‎u rsor‎;d‎b ms_o‎u tput‎.put_‎l ine(‎b ookn‎a me);‎end;‎---‎----r‎o wcou‎n tde‎c lare‎bo‎o knam‎e boo‎k s.bo‎o ks_n‎a me%t‎y pe;‎ cur‎s or m‎y curs‎o r is‎‎s elec‎t boo‎k s_na‎m e fr‎o m bo‎o ks;‎b egin‎op‎e n my‎c urso‎r;‎ f‎e tch ‎m ycur‎s or‎i nto ‎b ookn‎a me;‎ e‎x it w‎h en m‎y curs‎o r%no‎t foun‎d or ‎m ycur‎s or%n‎o tfou‎n d is‎null‎;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myc‎u rsor‎%rowc‎o unt)‎;e‎n d lo‎o p;‎clos‎e myc‎u rsor‎;end‎;‎---‎--游标跟‎新数据d‎e clar‎ec‎u rsor‎mycu‎r sor ‎i s‎ sel‎e ct b‎o oks_‎n ame ‎f rom ‎b ooks‎for ‎u pdat‎e;‎t ext ‎v arch‎a r2(1‎00);‎b egin‎op‎e n my‎c urso‎r;‎f etch‎mycu‎r sor‎ i‎n to t‎e xt;‎ whi‎l e my‎c urso‎r%fou‎n d lo‎o p‎ upd‎a te b‎o oks‎ set‎book‎s_nam‎e = b‎o oks_‎n ame ‎|| '_‎t'‎ wh‎e re c‎u rren‎t of ‎m ycur‎s or;‎ f‎e tch ‎m ycur‎s or‎i nto ‎t ext;‎en‎d loo‎p;‎c lose‎mycu‎r sor;‎end;‎---‎-----‎-----‎---隐式‎游标‎不需要声明‎begi‎nf‎o r cu‎r in ‎(sele‎c t bo‎o ks_n‎a me f‎r om b‎o oks)‎loop‎‎D BMS_‎O UTPU‎T.put‎_line‎(cur.‎b ooks‎_name‎);‎e nd l‎o op;‎e nd;‎--‎-----‎-----‎-----‎---存储‎过程---‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎--- c‎r eate‎or r‎e plac‎e pro‎c edur‎e get‎B ookN‎a meBy‎I d(bo‎o kid ‎i n nu‎m ber)‎is‎book‎n ame ‎v arch‎a r2(1‎00);‎b egin‎se‎l ect ‎b ooks‎_name‎into‎book‎n ame ‎f rom ‎b ooks‎wher‎e boo‎k s_id‎= bo‎o kid;‎--‎s elec‎t boo‎k s_na‎m e ‎ fro‎m boo‎k s wh‎e re b‎o oks_‎i d=1;‎db‎m s_ou‎t put.‎p ut_l‎i ne(o‎o kbna‎m e);‎e nd;‎e nd g‎e tBoo‎k Name‎B yId;‎---‎--be‎g in调用‎过程te‎s t.ge‎t Book‎N ameB‎y Id(1‎);--‎--调用过‎程exe‎c ute ‎t est.‎g etBo‎o kNam‎e ById‎(1);‎----‎-显示某个‎存储过程的‎错误信息‎s how ‎e rror‎s pro‎c edur‎e get‎B ookN‎a meBy‎I d; ‎‎SELE‎C T * ‎F ROM ‎(SE‎L ECT ‎A*, R‎O WNUM‎RN‎F ROM ‎(SELE‎C T * ‎F ROM ‎b ooks‎) A‎)WHE‎R E RN‎BETW‎E EN 1‎AND ‎5‎s elec‎t cou‎n t(*)‎from‎(sel‎e ct *‎from‎book‎s); ‎。

Oracle10g数据库连接及增删改查(精)

Oracle10g数据库连接及增删改查(精)

import java.sql.C onn ecti on;import java.sql.DriverMa nager;import java.sql.ResultSet;import java.sql.SQLExcepti on;import java.sql.Stateme nt;public class JdbcConnection {public static void main(String[] args {//getCo n(;// i nsertTbUser(;updateUser(;//query(;〃delTbUser(;}public static void insertTbUser( {Stri ng url = "jdbc:oracle:thin:@localhost:1521:orcl";Str ing driverClass = "oracle.jdbc.driver.OracleDriver" ;try {Class.forName (driverClass;Connection con = java.sql.DriverManager. getConnection (url, "mm", "mm";// statement开辟一个通道java.sql.Statement st = con.createStatement(;Stri ng in sertSql = "insert into tb_user(userid,username,password" + //执行sql语句,返回操作所影响的条数。

"values(101,'zhuyu','zhuy『";st.execute(i nsertSql;st.close(;con. close(;} catch (ClassNotFou ndExcepti on e { e.pr in tStackTrace(;} catch (SQLExcepti on e {e.pr in tStackTrace(;}}public static void delTbUser({Stri ng url= "jdbc:oracle:thi n: @localhost:1521:orcl";String driverClass= "oracle.jdbc.driver.OracleDriver";try {Class.forName (driverClass;Connection con=DriverManager. getConnection(url, "mm" ,"mm"; java.sql.Stateme nt st=c on. createStateme nt(;String delSql= "delete from tb_user where userid='23'";st.execute(delSql;st.close(;con. close(;} catch (ClassNotFou ndExcepti on e {// TODO Auto-ge nerated catch blocke.pr in tStackTrace(;} catch (SQLExcepti on e {// TODO Auto-ge nerated catch blocke.pr in tStackTrace(;}}public static void updateUser( {Stri ng url = "jdbc:oracle:thi n: @localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver" ;try {Class.forName (driverClass;Connection con = DriverManager. getConnection (url, "mm" ,"mm"; Stri ng updateSql = "update tb_user set password='1223423' where userid=5"Stateme nt st = con. createStateme nt(;st.execute(updateSql;st.close(;con. close(;} catch (ClassNotFou ndExcepti on e {e.pr in tStackTrace(;} catch (SQLExcepti on e {e.pr in tStackTrace(;}}public static void query( {Stri ng url = "jdbc:oracle:thi n: @localhost:1521:orcl" ;Stri ng driverClass = "oracle.jdbc.driver.OracleDriver" ; Connection con = null;Stateme nt st = n ull;ResultSet rs = null;try {Class.forName (driverClass;con = DriverManager. getConnection (url, "mm", "mm";st = con. createStateme nt(;String querySql = "select * from tb_user";rs = st.executeQuery(querySql;System.out.println( "id\tusername'tpassword";while (rs. next( {int id = rs.getlnt( "userid";String userName = rs.getString( "username";String password = rs.getString( "password";System.out.pr intln (id + "\t" + userName + "\t" + password; } } catch (ClassNotFou ndExcepti on e { e.pr in tStackTrace(; } catch (SQLException e {e.pr in tStackTrace(;}}public static void getCon( {Stri ng url = "jdbc:oracle:thi n: @localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver" ;//加载驱动try { ng.Class. forName (driverClass .newln sta nce(;//获得连接java.sql.Connection con = java.sql.DriverManager. getConnection (url, "mm" , "mm";System.out.pr intln(con;} catch (In sta ntiati on Excepti on e {e.pr in tStackTrace(;} catch (IllegalAccessExcepti on e {e.pr in tStackTrace(;} catch (ClassNotFou ndExcepti on e {e.pr in tStackTrace(;} catch (SQLException e {e.pr in tStackTrace(;}}。

oracle 修改存储过程部分内容

oracle 修改存储过程部分内容

oracle 修改存储过程部分内容Oracle是一种关系型数据库管理系统,通过存储过程可以实现复杂的数据库操作和数据处理。

在Oracle中修改存储过程的部分内容,可以通过以下步骤完成:1. 首先,使用Oracle的编辑器或其他适当的工具打开存储过程的源代码。

2. 定位到需要修改的部分内容,在该部分进行必要的更改。

可以修改存储过程的参数、逻辑、变量、查询语句等。

3. 确保修改后的代码语法正确、逻辑正确,并与原先的代码保持一致。

可以使用Oracle的语法检查工具或测试工具来验证代码的正确性。

4. 保存修改后的存储过程代码。

5. 使用Oracle的管理工具,如SQL Developer或PL/SQL Developer,连接到数据库。

6. 在管理工具的查询编辑器中执行ALTER PROCEDURE语句来修改存储过程。

示例:假设原始存储过程名称为"SP_GET_EMPLOYEE_DETAILS",现需要修改其中的查询语句,以获取特定条件下的员工详细信息。

原始存储过程代码示例:```CREATE PROCEDURE SP_GET_EMPLOYEE_DETAILS (p_employee_id IN NUMBER)ASBEGINSELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = p_employee_id;END;```修改后的存储过程代码示例:```CREATE OR REPLACE PROCEDURE SP_GET_EMPLOYEE_DETAILS(p_employee_id IN NUMBER, p_department_id IN NUMBER)ASBEGINSELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = p_employee_id AND DEPARTMENT_ID = p_department_id;END;```在以上示例中,根据任务需求,在原始存储过程中新增了一个参数p_department_id,并在查询语句中添加了对部门ID的条件限制。

Oracle存储过程和java调用

Oracle存储过程和java调用

1 存储过程介绍存储过程是指用于特定操作的pl/sql块,是由流控制和sql语句书写的过程。

存储过程经编译和sql优化后存储在数据库服务器中,使用时候只需要调用即可。

2 存储过程的优点1 使用存储过程,可以实现存储过程设计和编码工作分开进行,只要将存储过程名,参数,以及返回信息告诉编码人员即可。

2 使用存储过程可以减少sql注入式攻击,提供系统的安全性。

3 执行存储过程的用户要具有一定的权限才能使用存储过程。

没有数据操作权限的用户只能在系统控制下间接的存取数据。

4 存储过程的代码直接放在了数据库中,一般由客户端直接通过存储过程的名称来进行调用,简化客户端的操作逻辑。

3 存储过程的语法存储过程包含三部分声明,执行部分,异常。

可以有无参数的或带参数的存储过程。

存储过程的定义:Create [or replace] procedure procedure_name[(parameter1[mode] datatype1,parameter2 [model] datatype2…)]IS[As]BeginPl/sql block;End [procedure_name]其中: procedure_name是存储过程的名字,parameter用于指定参数,model用于指定参数模式,datatype用于指定参数类型, IS [AS]用于开始PL/SQL代码块。

注:1,当定义存储过程的参数时,只能指定数据类型,不能指定数据长度。

2,建立存储过程时,既可以指定存储过程的参数,也可以不提供任何参数。

3,存储过程的参数主要有三种类型:输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),其中IN用于接收调用环境的输入参数,OUT用于将输出数据传递到调用环境,IN OUT不仅要接收数据,而且要输出数据到调用环境。

4 一个简单的存储过程+调试写一个存储过程--修改其中的数据select count(*) from table1 where name='weiguo' 的查询结果是 count(*)=0如果涉及到两个或以上的输入参数,如下图:5 存储过程和java程序的接口操作5.1 无返回值的存储过程查询数据库-显示5.2 有返回值的存储过程(非列表-单个出参)注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

------创建表 create table t_user ( id number(4 primary key, uname varchar2(20, age number(3 ; ((注意下面的语句结束后须加/才能执行 -----添加的存储过程 create or replace procedure tu_save ( id in number, uname in varchar, age in number as begin insert into t_user(id,uname,age values(id,uname,age; end tu_save; -----删除的存储过程 create or replace procedure tu_del ( b_id in number as begin delete from t_user where id = b_id; end tu_del; -----修改的存储过程 create or replace procedure tu_update ( b_id in number, b_uname varchar, b_age number as begin update t_user set uname = b_uname,age = b_age where id = b_id; end tu_update; -----查询一条数据的存储过程 create or replace procedure tu_query ( b_id in number, b_uname out varchar, b_age out number as begin select uname,age into b_uname,b_age from t_user where id = b_id; end tu_query; -----查询所有的存储过程(查询多个数据,步骤1,3,查询一条数据,步骤1,2 1.先创建程序包 create or replace package tu_queryAll as type aa_all is ref cursor; end tu_queryAll; 2.创建查询一条数据的查询 create or replace procedure tu_query1 ( b_id in number, b_all out tu_queryAll.aa_all as begin open b_all for select * from t_user where id = b_id; end tu_query1; 3.利用程序包创建多查询 create or replace procedure tu_queryAlls ( b_all out tu_queryAll.aa_all as begin open b_all for select * from t_user; end tu_queryAlls; Java调用Oracle存储过程 ---1.创建连接数据库类 import java.sql.*; public class UserDao { /** * 创建连接 */ public static Connection getConn( { Connection conn = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"; conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:aptech","scott","tiger"; } catch (Exception e { // TODO Auto-generated catch block e.printStackTrace(; } return conn; } /** * 测试连接是否成功 */ public static void main(String[] args { Connection con = new UserDao(.getConn(; System.out.println(con; } } ---2.操作存储过程 import com.aptech.jb.dao.UserDao; import java.sql.*; public class UserDaoImpl extends UserDao { private Connection conn = null; ResultSet res = null; CallableStatement cstm = null; /** * 增加一条数据 * @param id * @param uname * @param age */ public void save(int id,String uname,int age { try { conn = this.getConn(; cstm = conn.prepareCall("{call tu_save(?,?,?}"; cstm.setInt(1, id; cstm.setString(2, uname; cstm.setInt(3, age; cstm.execute(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; }finally{ try { cstm.close(; conn.close(;

} catch (Exception e { // TODO: handle exception e.printStackTrace(; } } } /** * 删除一条数据 * @param id */ public void del(int id { try { conn = this.getConn(; cstm = conn.prepareCall("{call tu_del_pro(?}"; cstm.setInt(1, id; cstm.execute(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; }finally{ try { cstm.close(; conn.close(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; } } } /** * 修改一条数据 * @param id * @param uname * @param age */ public void update(int id,String uname,int age { try { conn = this.getConn(; cstm = conn.prepareCall("{call tu_update(?,?,?}"; cstm.setInt(1, id; cstm.setString(2, uname; cstm.setInt(3, age; cstm.execute(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; }finally{ try { cstm.close(; conn.close(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; } } } /** * 根据Id查询语句 * @param id */ public void query(int id { try { conn = this.getConn(; cstm = conn.prepareCall("{call tu_query(?,?,?}"; cstm.setInt(1, id; cstm.registerOutParameter(2, Types.VARCHAR; cstm.registerOutParameter(3, Types.INTEGER; cstm.execute(; String name = cstm.getString(2; int age = cstm.getInt(3; System.out.println(name+","+age; } catch (Exception e { // TODO: handle exception e.printStackTrace(; }finally{ try { cstm.close(; conn.close(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; } } } /** * 根据游标查询一条数据 */ public void query1(int id { try { conn = this.getConn(; cstm = conn.prepareCall("{call tu_query1(?,?}"; cstm.setInt(1, id; cstm.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR; cstm.execute(; res = (ResultSetcstm.getObject(2; if(res.next( { System.out.println("id="+res.getInt(1+",uname="+res.getString(2+",age="+res.getInt(3; } } catch (Exception e { // TODO: handle exception e.printStackTrace(; }finally{ try { res.close(; cstm.close(; conn.close(; } catch (Exception e { // TODO: handle exception e.printStackTrace(; } } } /** * 查询所有数据 */ public

相关文档
最新文档