摘要: Web4J是一个比较新潮的Web框架,具体信息可以参考官网的相关说明:http://www.web4j.com/,下面是我的简单试用
1、数据库准备(MySQL):
创建一个数据库和一个单表:
create database test4j;
use test4j;
create table tbl_log(
  ...  
阅读全文
			
			
		 
	
		
			
			
			ORACLE自治事务是一个不错的功能,关键字是AUTONOMOUS_TRANSACTION,下面是我试用:
1、测试:
创建一个测试表:
 CREATE TABLE TBL_TEST(
CREATE TABLE TBL_TEST(
 TEST_ID NUMBER NOT NULL,
  TEST_ID NUMBER NOT NULL,
 TEST_DESC VARCHAR2(100) NOT NULL
  TEST_DESC VARCHAR2(100) NOT NULL
 );
);
新增两条记录(注意没有进行提交):
 INSERT INTO TBL_TEST VALUES(1,'DESC 1');
INSERT INTO TBL_TEST VALUES(1,'DESC 1');
 INSERT INTO TBL_TEST VALUES(2,'DESC 2');
INSERT INTO TBL_TEST VALUES(2,'DESC 2');
通过自治事务添加6两条记录:
 DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
 BEGIN
BEGIN
 FOR i IN 3..8 LOOP
 FOR i IN 3..8 LOOP
 INSERT INTO TBL_TEST VALUES(i,'DESC '||i);
  INSERT INTO TBL_TEST VALUES(i,'DESC '||i);
 END LOOP;
 END LOOP;
 COMMIT;
 COMMIT;
 END;
END;
 /
/
查看执行结果如下:
 SQL> SELECT * FROM TBL_TEST;
SQL> SELECT * FROM TBL_TEST;
 
 
 TEST_ID TEST_DESC
   TEST_ID TEST_DESC
 ---------- --------------------------------------------------------------------------------
---------- --------------------------------------------------------------------------------
 1 DESC 1
         1 DESC 1
 2 DESC 2
         2 DESC 2
 3 DESC 3
         3 DESC 3
 4 DESC 4
         4 DESC 4
 5 DESC 5
         5 DESC 5
 6 DESC 6
         6 DESC 6
 7 DESC 7
         7 DESC 7
 8 DESC 8
         8 DESC 8
 
 
 8 rows selected
8 rows selected
回滚后再次查看结果(通过结果可以看到采用自治事务的新增没有被回滚掉):
 SQL> ROLLBACK;
SQL> ROLLBACK;
 
 
 Rollback complete
Rollback complete
 SQL> SELECT * FROM TBL_TEST;
SQL> SELECT * FROM TBL_TEST;
 
 
 TEST_ID TEST_DESC
   TEST_ID TEST_DESC
 ---------- --------------------------------------------------------------------------------
---------- --------------------------------------------------------------------------------
 3 DESC 3
         3 DESC 3
 4 DESC 4
         4 DESC 4
 5 DESC 5
         5 DESC 5
 6 DESC 6
         6 DESC 6
 7 DESC 7
         7 DESC 7
 8 DESC 8
         8 DESC 8
 
 
 6 rows selected
6 rows selected
2、应用自治事务实现日志记录:
创建一个日志表:
 CREATE TABLE TBL_LOG(
CREATE TABLE TBL_LOG(
 LOG_ID NUMBER(10) PRIMARY KEY,
  LOG_ID NUMBER(10) PRIMARY KEY,
 LOG_MSG VARCHAR2(4000) NOT NULL,
  LOG_MSG VARCHAR2(4000) NOT NULL,
 LOG_TIME DATE NOT NULL
  LOG_TIME DATE NOT NULL
 );
);
创建一个序列:
 CREATE SEQUENCE SEQ_TBL_LOG;
CREATE SEQUENCE SEQ_TBL_LOG;
创建一个记录日志的存储过程:
 CREATE OR REPLACE PROCEDURE DO_LOG(P_MSG IN VARCHAR2) AS
CREATE OR REPLACE PROCEDURE DO_LOG(P_MSG IN VARCHAR2) AS 
 PRAGMA AUTONOMOUS_TRANSACTION;
 PRAGMA AUTONOMOUS_TRANSACTION;
 BEGIN
BEGIN
 INSERT INTO TBL_LOG VALUES(SEQ_TBL_LOG.NEXTVAL,P_MSG,SYSDATE);
  INSERT INTO TBL_LOG VALUES(SEQ_TBL_LOG.NEXTVAL,P_MSG,SYSDATE);
 COMMIT;
  COMMIT;
 END;
END;
 /
/
测试上面的存储过程:
 BEGIN
BEGIN
 INSERT INTO TBL_TEST VALUES (100,'DESC 100');
  INSERT INTO TBL_TEST VALUES (100,'DESC 100');
 -- test the do_log
  -- test the do_log
 INSERT INTO TBL_TEST VALUES (101,NULL);
  INSERT INTO TBL_TEST VALUES (101,NULL);
 EXCEPTION
EXCEPTION
 WHEN OTHERS THEN
  WHEN OTHERS THEN
 DO_LOG(P_MSG =>SQLERRM);
    DO_LOG(P_MSG =>SQLERRM);
 ROLLBACK;
    ROLLBACK;
 END;
END;
 /
/
查看运行结果:
 SQL> SELECT * FROM TBL_TEST WHERE TEST_ID>=100;
SQL> SELECT * FROM TBL_TEST WHERE TEST_ID>=100;
 
 
 TEST_ID TEST_DESC
   TEST_ID TEST_DESC
 ---------- --------------------------------------------------------------------------------
---------- --------------------------------------------------------------------------------
 SQL> SELECT * FROM TBL_LOG;
SQL> SELECT * FROM TBL_LOG;
 
 
 LOG_ID LOG_MSG                                                                          LOG_TIME
     LOG_ID LOG_MSG                                                                          LOG_TIME
 ----------- -------------------------------------------------------------------------------- -----------
----------- -------------------------------------------------------------------------------- -----------
 1 ORA-01400: 无法将 NULL 插入 ("FWMS4ZH_TEST"."TBL_TEST"."TEST_DESC")              2009-5-15 2
          1 ORA-01400: 无法将 NULL 插入 ("FWMS4ZH_TEST"."TBL_TEST"."TEST_DESC")              2009-5-15 2