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

          ORACLE的基本語法集錦

          Posted on 2007-09-10 23:16 semovy 閱讀(274) 評論(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,....) 
          主站蜘蛛池模板: 珲春市| 美姑县| 连山| 华宁县| 清徐县| 东至县| 金川县| 康马县| 仁怀市| 乃东县| 井研县| 昌邑市| 厦门市| 赤城县| 伊吾县| 沁阳市| 许昌市| 甘南县| 石泉县| 那坡县| 柳河县| 龙州县| 科技| 大悟县| 山阴县| 襄樊市| 灵川县| 温宿县| 瓦房店市| 台前县| 花垣县| 渭南市| 酒泉市| 白银市| 科技| 奈曼旗| 健康| 三都| 邛崃市| 滕州市| 通化市|