--創建行為(行級行為)
建立或取代觸發器 tri_update_emp_bak
更新後
關於 emp_bak
for every row -- 每更新一行就觸發一次
開始
--oracle 裡面對詐欺也提供了特殊的物件 :NEW :OLD 來存取更新反向的數據
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
如果更新的話
結束如果;
如果插入
結尾;
--建立檢舉(行級檢舉)(前置)
建立或取代觸發器 tri3_update_emp_bak
更新前
關於 emp_bak
for every row -- 每更新一行就觸發一次
開始
--oracle 裡面對詐欺也提供了特殊的物件 :NEW :OLD 來存取更新反向的數據
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
結尾;
從emp_bak中選擇*
更新 emp_bak 設定 sal = 1000 其中 empno in (7788)
--建立報表(表級報表)
--//表內部不允許使用 :NEW :OLD 儀表
建立或取代觸發器 tri2_update_emp_bak
更新後
關於 emp_bak
開始
-- dbms_output.put_line('更新後' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
結尾;
--創建行為(行級行為)
建立或取代觸發器 tri4_update_emp_bak
更新薩爾後
關於 emp_bak
for every row -- 每更新一行就觸發一次
開始
--oracle 裡面對詐欺也提供了特殊的物件 :NEW :OLD 來存取更新反向的數據
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
結尾;
建立使用者資訊表
(
用戶 ID 號碼(4) 主鍵,
使用者名稱 varchar2(20)
)
建立表addrinfo
(
addrid number(4) 主鍵,
新增名稱 varchar2(20),
使用者 ID 號碼(4) 引用 userinfo(userid)
)
插入userinfo值(1,'李四')
插入addrinfo值(1,'湖北',1)
從地址資訊中選擇 *
從 userinfo 中刪除 userid =1
--級聯刪除
建立或取代觸發器 tri_userinfo_delete
刪除前
在使用者資訊上
對於每一行
開始
從 addrinfo 中刪除,其中 userid = :OLD.userid;
-- 插入到
結尾;
創建表 dept_bak 作為 select * from dept
建立或取代視圖 myview
作為
選擇a.empno、a.ename、a.sal、b.dname
來自 emp a 內連接部門 b
在 a.deptno = b.deptno 上
從我的視圖中選擇 *
更新 myview 設定 sal = 1000,dname='aaaaa' 其中 empno = 7499
-- 替代方案在上面的視圖中使用只是行級的
——替代旋轉的特徵是真正的操作已經變成了一個由旋轉來完成的動作
建立或取代觸發器 tri_myview
而不是更新
在我看來
開始
dbms_output.put_line('刪除操作執行了。。。');
更新 emp 設定 sal = :NEW.sal 其中 empno = :OLD.empno;
更新部門集 dname = :NEW.dname 其中 dname = :OLD.dname;
--從 emp 中刪除,其中 empno = :OLD.empno;
結尾;
從僱員中選擇*;
從部門中選擇*;
更新 emp_bak set ename ='aaaa',sal = 10000 其中 empno in (7788)
--系統套件
-- 產生隨機數
******************
--dbms_random.value 0-1之間的隨機小數
--dbms_random.random 隨機整數
從對偶中選擇 dbms_random.value;
建立或取代過程 proc_cardno(mycardno out varchar2)
作為
臨時卡 varchar2(50);
卡諾 varchar2(19);
開始
臨時卡:= dbms_random.value;
卡號:=substr(tempcard,2,4)||' '||substr(臨時卡,6,4)||' '||substr(臨時卡,10,4)||' '||substr(臨時卡,14,4);
mycardno:=cardno;
-- dbms_output.put_line(tempcard);
-- dbms_output.put_line(cardno);
結尾;
--使用UTL_FILE包讀寫文件
建立目錄 MY_DIR 作為 'd:temp';
建立目錄 MY_DIR2 為“d:temp2”;
宣告
--定義檔案對象
myfile utl_file.file_type;
--定義變數用於儲存每行的數據
linestr varchar2(200);
開始
--開啟文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','r');
--進行讀取(循環)
環形
utl_file.get_line(myfile,linestr);
dbms_output.put_line(linestr);
結束循環;
例外
當其他人那麼
utl_file.fclose(myfile);
dbms_output.put_line('讀取完畢!');
結尾;
宣告
--定義檔案對象
myfile utl_file.file_type;
--定義變數用於儲存每行的數據
linestr varchar2(200);
開始
--開啟文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加數據
--utl_file.get_line(myfile,linestr);
utl_file.put_line(myfile,'你好,這是新的資料',true);
utl_file.fclose(myfile);
例外
當其他人那麼
utl_file.fclose(myfile);
dbms_output.put_line('讀取完畢!');
結尾;
--複製品
宣告
--定義檔案對象
原始檔 utl_file.file_type;
目標檔案utl_file.file_type;
--定義變數用於儲存每行的數據
linestr varchar2(200);
開始
--開啟文件
sourcefile:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
--進行讀取(循環)並讀取到新的檔案裡面
環形
utl_file.get_line(原始檔,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
結束循環;
例外
當其他人那麼
utl_file.fclose(原始檔);
utl_file.fclose(目標檔);
dbms_output.put_line('拷貝完畢!');
結尾;
本文來自CSDN博客,轉載請標示出處:http: //blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx