<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    soobur

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      2 隨筆 :: 1 文章 :: 1 評(píng)論 :: 0 Trackbacks

    2006年5月9日 #

    【環(huán)境】:
    ??? winXP sp2
    ????? oracle 9.2.0.1.0
    【輔助工具】:
    ??? JDeveloper904(寫sqlj代碼用)

    ??? 由于第一次用sqlj,對(duì)oracle jvm和觸發(fā)器都不是很了解,所以程序能執(zhí)行成什么樣子也不知道,只能一步一步的摸索……

    【一些很失敗的操作】:

    ??? 1、用9i的OEM來創(chuàng)建java源,沒有在命令行下用loadjava!
    ??? 用JDeveloper寫好了程序之后,直接用OEM創(chuàng)建“java源”,然后把代碼粘貼進(jìn)去,編譯,通過……這樣做看似可以運(yùn)行,實(shí)際上有一些編譯過程中的warning都沒有顯示,所以也不知道到底會(huì)不會(huì)有錯(cuò)誤(影響不大,不過建議最好去命令行下去做),但是,這樣創(chuàng)建很容易犯一個(gè)致命的錯(cuò)誤,就是創(chuàng)建的時(shí)候很容易把java文件的包信息忽略,比如,偶的sqlj文件頭是這樣的:
    package com.supermap.subo;

    import sqlj.runtime.*;
    import sqlj.runtime.ref.*;
    import java.sql.*;
    import oracle.sqlj.runtime.*;
    import java.io.File;

    #sql iterator Tuser(Long id , String name);
    public class SqljTest

    在OEM中創(chuàng)建“java源”的時(shí)候直接創(chuàng)建SqljTest,然后把代碼復(fù)制進(jìn)去,編譯可以通過,但是在“java類”下面并沒有相應(yīng)的類生成!而且沒有提示!
    ???
    ??? 2、用OEM去創(chuàng)建PROCEDURE,create or replace procedure test (args varchar2) as language java name 'SqljTest.test(java.lang.String)';(這里也沒有注意到要這樣引用:'com.supermap.subo.SqljTest.test(java.lang.String)';也沒有任何的錯(cuò)誤提示,編譯一直是Valid!)
    ???
    ??? 3、用OEM創(chuàng)建觸發(fā)器:create or replace trigger test after update of NAME on T_USER for each row CALL test2(:old.NAME) ,這么創(chuàng)建倒是沒什么問題,不過總是提示ORA-00963:缺少表達(dá)式!后來證明用同樣的語句到sqlplus下去創(chuàng)建,不會(huì)有錯(cuò)誤!

    【成功的操作】:
    ??? 1、編寫sqlj代碼:
    package com.supermap.subo;

    import sqlj.runtime.*;
    import sqlj.runtime.ref.*;
    import java.sql.*;
    import oracle.sqlj.runtime.*;
    import java.io.File;

    #sql iterator Tuser(Long id , String name);
    public class SqljTest
    {
    ? public static void test(String args)
    ??? {
    ??? try
    ??? {
    ????? Oracle.connect("jdbc:oracle:thin:@localhost:1521:SOOBUR","SYSTEM","supermap");?
    ????? Tuser u;
    ????? #sql
    ??????? u = { SELECT ID,NAME FROM SOOBUR.T_USER WHERE ID = 1 };
    ??????? while(u.next())
    ??????? {
    ????????? System.out.println(u.name());
    ????????? if (u.name().equals("user_8762886"))
    ????????? {
    ??????????? File fo = new File("c:/test.txt");
    ??????????? fo.createNewFile();
    ????????? }
    ??????? }
    ??? } catch (Exception ex)
    ??? {
    ????? ex.printStackTrace();
    ??? }
    ? }
    }
    ??? 2、乖乖的到命令行下去loadjava:loadjava -user [username]/[pass]@SID -o -v -r ./SqljTest.sqlj
    這回有提示了:
    errors?? : source com/supermap/subo/SqljTest
    ??? com/supermap/subo/SqljTest:18: Warning: 從 NUMERIC(38) 轉(zhuǎn)換到列 java.lang.Long id 時(shí), 可能會(huì)降低精度。
    ????????? #sql
    ????????? ^
    ???? Info: 1 warnings
    問題不大,這個(gè)時(shí)候再打開OEM看一下,“java源”顯示的是com/supermap/subo/SqljTest名字明顯的不一樣了!“java類”下面也有了相應(yīng)的目錄結(jié)構(gòu)和類!
    ??? 3、登陸到sqlplus,create or replace procedure test (args varchar2) as language java name 'SqljTest.test(java.lang.String)';
    ????? 4、create or replace trigger test after update of NAME on T_USER for each row CALL test2(:old.NAME)
    ????? 5、然后隨便update一條記錄,成功!test.txt也創(chuàng)建成功(原來以為oracle的jvm可能會(huì)受限制,不能隨便對(duì)其他目錄進(jìn)行讀寫,現(xiàn)在看來不是這樣的^_^)!

    【小節(jié)一下】 :
    ??? 做試驗(yàn)的時(shí)候千萬不要怕麻煩!一定要乖乖的到命令行下去一句一句的敲!尤其是像偶這樣初學(xué)的xdjm們!好像用OEM可視化的操作很方便,其實(shí)很多錯(cuò)誤都被忽略了,結(jié)果自然是不成功了!動(dòng)輒半天時(shí)間耗進(jìn)去,多不值得!而且oracle的錯(cuò)誤提示實(shí)在是%#×)#……,比如:“ORA-00963:缺少表達(dá)式!”、“ORA-04088: 觸發(fā)器 'SOOBUR.TEST' 執(zhí)行過程中出錯(cuò)”等等……實(shí)在讓人是摸不著頭腦!
    ???
    ??? 偶的運(yùn)氣還是不錯(cuò)的,試了小半天,終于成功了^_^!
    ??? 寫出來和大家共享,希望老鳥們多多指教,多多糾錯(cuò),希望跟偶一樣的菜鳥們吸取偶的教訓(xùn)^_^
    ???
    ???

    posted @ 2006-06-04 14:03 soobur 閱讀(1136) | 評(píng)論 (1)編輯 收藏

    好久不寫blog了,記得以前寫是因?yàn)楸究粕蠈I(yè)課時(shí)候老師要求,作為平時(shí)成績(jī)的評(píng)定標(biāo)準(zhǔn),blog上面自然都是一些課程的筆記和隨想之類的,與技術(shù)無關(guān)……回頭看看,也蠻有意思的^_^ 現(xiàn)在又鼓起勇氣打算寫些東西了,主要也是本著學(xué)習(xí)提高的目的,希望被大蝦們拍轉(zhuǎn)……
    posted @ 2006-05-09 23:56 soobur 閱讀(115) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 在线jlzzjlzz免费播放| 曰批视频免费40分钟试看天天| 成年美女黄网站色大免费视频| 亚洲视频2020| 好久久免费视频高清| 亚洲国产成人高清在线观看| 国产午夜无码片免费| 爱情岛论坛免费视频| 久久国产免费一区| 久久久影院亚洲精品| 久久不见久久见免费视频7 | 久草免费手机视频| 亚洲AV无码精品色午夜果冻不卡| 国内少妇偷人精品视频免费| 亚洲国产精品无码av| 日本xxxx色视频在线观看免费| 亚洲五月激情综合图片区| 99久久久国产精品免费牛牛 | 亚洲啪AV永久无码精品放毛片| 免费观看的av毛片的网站| 亚洲国产成人AV在线播放 | 亚洲理论电影在线观看| 亚洲中文字幕一二三四区| a视频免费在线观看| 亚洲色四在线视频观看| 台湾一级毛片永久免费| 国产精品国产亚洲区艳妇糸列短篇 | 亚洲性一级理论片在线观看| 无遮免费网站在线入口| 色吊丝免费观看网站| 亚洲日韩国产精品第一页一区| 99视频在线看观免费| 亚洲日韩国产二区无码| 亚洲天堂在线视频| 37pao成人国产永久免费视频| 亚洲人av高清无码| 亚洲国产a∨无码中文777| 手机在线毛片免费播放| 国产免费久久精品99久久| 亚洲国产精品成人久久久| 亚洲AV无码乱码在线观看牲色|