收藏 分享(赏)

Java 存储过程和触发器(24 )+.ppt

上传人:sjmd695 文档编号:8646758 上传时间:2019-07-07 格式:PPT 页数:24 大小:107.50KB
下载 相关 举报
Java 存储过程和触发器(24 )+.ppt_第1页
第1页 / 共24页
Java 存储过程和触发器(24 )+.ppt_第2页
第2页 / 共24页
Java 存储过程和触发器(24 )+.ppt_第3页
第3页 / 共24页
Java 存储过程和触发器(24 )+.ppt_第4页
第4页 / 共24页
Java 存储过程和触发器(24 )+.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、 Dr. Philip Cannata,Data Management,1,First of all, always do this:set serveroutput on size 10000call dbms_java.set_output(10000); If you get something like this ERROR at line 1: ORA-29549: class SCOTT.HelloWorld has changed, Java session state cleared ORA-06512: at “SCOTT.HELLO“, line 0 ORA-06512:

2、at line 1 do this againcall dbms_java.set_output(10000);,Java Stored Procedures, Dr. Philip Cannata,Data Management,2,Hello World method create or replace and compile java source named myProcedureMethods as public class myProcedureMethods public static void helloWorld() System.out.println(“Hello wor

3、ld!“); /,Java Methods in Oracle, Dr. Philip Cannata,Data Management,3,hw stored procedure that calls the helloWorld java method. create or replace procedure hw as language java name myProcedureMethods.helloWorld(); /,Stored Procedure to Call Java Method, Dr. Philip Cannata,Data Management,4,set serv

4、eroutput on size 10000 call dbms_java.set_output(10000); exec hw,Execute Stored Procedure, Dr. Philip Cannata,Data Management,5,Simple JDBC method create or replace and compile java source named myProcedureMethods as import java.util.*; import java.sql.*; public class myProcedureMethods public stati

5、c void helloWorld() System.out.println(“Hello world!“); public static void simpleJDBC() throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“create or replace view empV1 as select * from emp“);pstatement.executeQ

6、uery();System.out.println(“Created view empV1.“); /,Java Methods in Oracle, Dr. Philip Cannata,Data Management,6,sjdbc stored procedure that calls the simpleJDBC java method create or replace procedure sjdbc as language java name myProcedureMethods.simpleJDBC(); /,Stored Procedure to Call Java Metho

7、d, Dr. Philip Cannata,Data Management,7,set serveroutput on size 10000 call dbms_java.set_output(10000); exec sjdbc,Execute Stored Procedure, Dr. Philip Cannata,Data Management,8,JDBC method with an argument create or replace and compile java source named myProcedureMethods as import java.util.*; im

8、port java.sql.*; public class myProcedureMethods public static void helloWorld() System.out.println(“Hello world!“); public static void simpleJDBC() throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“create or

9、replace view empV1 as select * from emp“);pstatement.executeQuery();System.out.println(“Created view emptmp.“); public static void argJDBC(int sal) throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“ update emp

10、 set comm = 0 where sal = ? “);pstatement.setInt(1, sal); pstatement.executeQuery();System.out.println(“Updated emp comm.“); /,Java Methods in Oracle, Dr. Philip Cannata,Data Management,9,argjdbc stored procedure that calls the argJDBC java method create or replace procedure argjdbc(sal number) as l

11、anguage java name myProcedureMethods.argJDBC(int); /,Stored Procedure to Call Java Method, Dr. Philip Cannata,Data Management,10,set serveroutput on size 10000 call dbms_java.set_output(10000); exec argjdbc(800),Execute Stored Procedure, Dr. Philip Cannata,Data Management,11,JDBC method with an argu

12、ment and manipulating the results (see next page) create or replace and compile java source named myProcedureMethods as import java.util.*; import java.sql.*; public class myProcedureMethods public static void helloWorld() System.out.println(“Hello world!“); public static void simpleJDBC() throws SQ

13、LException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“create or replace view empV1 as select * from emp“);pstatement.executeQuery();System.out.println(“Created view emptmp.“);,Java Methods in Oracle, Dr. Philip Cannata,Dat

14、a Management,12,public static void argJDBC(int sal) throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“ update emp set comm = 0 where sal = ? “);pstatement.setInt(1, sal); pstatement.executeQuery();System.out.p

15、rintln(“Updated emp comm.“);public static void fullJDBC(int sal) throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);PreparedStatement pstatement = conn.prepareStatement(“ select * from emp where sal ? “);pstatement.setInt(1, sal); ResultSet rs = pstatement.execute

16、Query();while(rs.next() System.out.println(“Employee number “+ rs.getInt(“empno“) + “ name: “ + rs.getString(“ename“); /,Java Methods in Oracle, Dr. Philip Cannata,Data Management,13,fulljdbc stored procedure that calls the fullJDBC java method create or replace procedure fulljdbc(sal number) as lan

17、guage java name myProcedureMethods.fullJDBC(int); /,Stored Procedure to Call Java Method, Dr. Philip Cannata,Data Management,14,set serveroutput on size 10000 call dbms_java.set_output(10000); exec fulljdbc(800),Execute Stored Procedure, Dr. Philip Cannata,Data Management,15,Triggers, Dr. Philip Can

18、nata,Data Management,16,Java methods for SG Order Trigger create or replace and compile java source named sgTriggerMethods as import java.util.*; import java.sql.*;public class sgTriggerMethodspublic static void changeTotalForItemInsert(String ord_id, int price, int quan) throws SQLException Connect

19、ion conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);String query = “select total from s_ord where id = ? “;PreparedStatement pstatement = conn.prepareStatement(query);pstatement.setString(1, ord_id);ResultSet rs = pstatement.executeQuery();rs.next();int total = rs.getInt(“total“);query = “ u

20、pdate s_ord set total = ? where id = ? “;pstatement = conn.prepareStatement(query);pstatement.setInt(1, (total + (price * quan);pstatement.setString(2, ord_id);pstatement.executeQuery(); /,Triggers, Dr. Philip Cannata,Data Management,17,Stored procedure that calls the changeTotalForItemInsert java m

21、ethod create or replace procedure sgChageTotalForItemInsert(ord_id varchar2, price number, quantity number) as language java name sgTriggerMethods. changeTotalForItemInsert(java.lang.String, int, int); /,Stored Procedure to Call Java Method, Dr. Philip Cannata,Data Management,18,Trigger for changing

22、 order total when item is inserted create or replace trigger sgChageTotalForItemInsert after insert on s_item For each rowcall sgChageTotalForItemInsert(:new.ord_id, :new.price, :new.quantity) /,Execute Stored Procedure, Dr. Philip Cannata,Data Management,19,Java Triggers,To try out the trigger do t

23、he following:drop sg tablescreate sg tablescolumn ord_id format a6select * from s_item where ord_id = 100 order by item_idselect sum (price * quantity) from s_item where ord_id = 100select * from s_ord where id = 100select * from s_product where id not in (select product_id from s_item where ord_id

24、= 100)insert into s_item values(100,8,50536,125,1,null)column ord_id format a6select * from s_item where ord_id = 100 order by item_idselect sum (price * quantity) from s_item where ord_id = 100select * from s_ord where id = 100, Dr. Philip Cannata,Data Management,20,Java Triggers,Think about what i

25、t would take to have triggers for update and delete of items., Dr. Philip Cannata,Data Management,21,Java Triggers,Why cant we just do this? create or replace and compile java source named sgTriggerMethods as import java.util.*; import java.sql.*; public class sgTriggerMethodspublic static void chan

26、geTotalForItemInsert(String ord_id, int price, int quan) throws SQLException Connection conn = DriverManager.getConnection(“jdbc:oracle:kprb:“);String query = “ update s_ord set total = (select sum(price * quantity) from s_item where ord_id = ?) where id = ? “;PreparedStatement pstatement = conn.pre

27、pareStatement(query);pstatement.setString(1, ord_id);pstatement.setString(2, ord_id);pstatement.executeQuery(); /, Dr. Philip Cannata,Data Management,22,Java Triggers,To try out the trigger do the following:drop sg tablescreate sg tablesrecreate the triggerinsert into s_item values(100,8,50536,125,1

28、,null), Dr. Philip Cannata,Data Management,23,Java Triggers The Dreaded Mutating Table Problem,insert into s_item values(100,8,50536,125,1,null) * ERROR at line 1: ORA-29532: Java call terminated by uncaught Java exception: oracle.jdbc.driver.OracleSQLException: ORA-04091: table SCOTT.S_ITEM is muta

29、ting, trigger/function may not see it ORA-04088: error during execution of trigger SCOTT.ITEM_INSERT_CHANGE_ORDER_TOTAL The problem is a trigger cant make reference to the table being changed. String query = “ update s_ord set total = (select sum(price * quantity) from s_item where ord_id = ?) where id = ? “;,Problem!, Dr. Philip Cannata,Data Management,24,Java Stored Procedures,Write some code,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报