posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ORACLE的基本語法集錦

          Posted on 2007-09-10 23:16 semovy 閱讀(273) 評論(0)  編輯  收藏 所屬分類: Oracle數據庫方面
          -- 表
          create table test (names varchar2(12),
                             dates date,
                             num   int,
                             dou   double);
          -- 視圖
          create or replace view vi_test as
          select * from test;

          -- 同義詞
          create or replace synonym aa
          for dbusrcard001.aa;

          -- 存儲過程
          create or replace produce dd(v_id in employee.empoy_id%type)
          as
          begin
             
          end
          dd;

          -- 函數
          create or replace function ee(v_id in employee%rowtype) return varchar(15)
          is
          var_test varchar2(15);
          begin
            return var_test;
          exception when others then
             
          end

          -- 三種觸發器的定義
          create or replace trigger ff
          alter delete
          on test
          for each row
          declare
          begin
             delete from test;
             if sql%rowcount < 0 or sql%rowcount is null then
                rais_replaction_err(-20004,"錯誤")
             end if
          end


          create or replace trigger gg
          alter insert
          on test
          for each row
          declare
          begin
             if :old.names = :new.names then
                raise_replaction_err(-2003,"編碼重復");
             end if
          end


          create or replace trigger hh
          for update
          on test
          for each row
          declare
          begin
            if updating then
               if :old.names <> :new.names then
           reaise_replaction_err(-2002,"關鍵字不能修改")
               end if
            end if
          end 

          -- 定義游標
          declare
             cursor aa is
                select names,num from test;
          begin
             for bb in aa
             loop
                  if bb.names = "ORACLE" then
                  
                  end if
             end loop;
             
          end

          -- 速度優化,前一語句不后一語句的速度快幾十倍
          select names,dates 
          from test,b
          where test.names = b.names(+) and
                b.names is null and
                b.dates > date('2003-01-01','yyyy-mm-dd')

           
          select names,dates
          from test 
          where names not in ( select names 
                                 from b
                                where dates > to_date('2003-01-01','yyyy-mm-dd'))
                                 

          -- 查找重復記錄
          select names,num 
          from test 
          where rowid != (select max(rowid) 
                           from test b 
                          where b.names = test.names and
                                b.num = test.num)


          -- 查找表TEST中時間最新的前10條記錄
          select * from (select * from test order by dates desc) where rownum < 11

          -- 序列號的產生
          create sequence row_id
          minvalue 1
          maxvalue 9999999999999999999999
          start with 1
          increment by 1

          insert into test values(row_id.nextval,....) 
          主站蜘蛛池模板: 台前县| 永川市| 土默特右旗| 渑池县| 谷城县| 固镇县| 白沙| 阳春市| 扎鲁特旗| 汝阳县| 平舆县| 金堂县| 邛崃市| 丹棱县| 华池县| 迭部县| 乌鲁木齐县| 类乌齐县| 屏东县| 江北区| 社旗县| 运城市| 洱源县| 郴州市| 维西| 寿宁县| 商洛市| 蕉岭县| 台北市| 明光市| 锦屏县| 河间市| 睢宁县| 施甸县| 伊金霍洛旗| 敖汉旗| 海安县| 太仆寺旗| 上犹县| 阳新县| 获嘉县|