PIXNET Logo登入

oracle園地

跳到主文

這裡是到處搜括來的ORACLE技術及文章,也有自己發表的文章,希望大家可以互相討論! PS-若有侵權,請告知哦.

部落格全站分類:職場甘苦

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 26 週四 200911:14
  • Oracle資料如何匯出成文字檔(轉) ?

Oracle資料如何匯出成文字檔?

# sqlplus username/password@TNSName   (1)
SQL> set pagesize 50000   (2)
SQL> set linesize 1000   (3)
SQL> spool member.txt   (4)
SQL> select id ||'[,]'|| name ||'[,]'|| age from member;   (5)
SQL> spool off   (6)
說明:
(1) 進入sqlplus。
(4) 將螢幕的內容輸出到member.txt。
(6) 結束輸出螢幕資料到檔案。
(2) 將螢幕長度設為每頁50000行,如果資料超過螢幕,輸出到檔案時,系統會在每頁開頭加入header,所以把螢幕每頁的長度設到超過資料筆數。
(3) 將螢幕寬度設為每行1000個字元,如果資料每行超過螢幕寬度,會自動折行,輸出到檔案就不是一行一筆資料,所以將每行的長度加大。
(5) 從table member抓出欄位id、name、age的資料,各欄位資料以[,]分開,欄位的分隔符號不限一個字元。
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(2) 人氣(4,643)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:42
  • PL/SQL CASE敘述(轉)

 
1.搜查型CASE敘述

CASE
WHEN condition1 THEN
statements1
[WHEN condition2 THEN statements2]
…
[ELSE statements3]
END CASE;

(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(7,722)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:41
  • PL/SQL陣列用法



第一種方法,自己傳值給array
PROCEDURE p_varray_collection IS
TYPE auth_var IS VARRAY (10) OF employee.emp_name%TYPE;

a_auth auth_var := auth_var ();
BEGIN
a_auth.EXTEND;
a_auth (1) := ‘Smith’;
a_auth.EXTEND;
a_auth (2) := ‘Jones’;
DBMS_OUTPUT.put_line (a_auth (1) ‘ and ‘ a_auth (2));
END;


第二種方法,從資料庫查出值給array


PROCEDURE p_varray_collection IS
TYPE auth_var IS VARRAY (20) OF author.author_last_name%TYPE;


a_auth auth_var := auth_var ();
indx NUMBER := 1;
BEGIN
FOR r_c1 IN (SELECT author_last_name
FROM author)
LOOP
IF indx < a_auth.LIMIT
THEN
a_auth.EXTEND;
a_auth (a_auth.LAST) := r_c1.author_last_name;
DBMS_OUTPUT.put_line (a_auth (indx));
indx := indx + 1;
END IF;
END LOOP;
END;
**************************************




(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(6,968)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:38
  • ORACLE PL/SQL 常用轉換函數(轉)


to_char(d[,fmt[,'nlsparams']])
–◎ 轉換日期欄位資料成自定格式文字
–◎ 當沒有輸入fmt時,將使用預定的日期格式轉換
–◎ ‘nlsparams’是用來決定月份與日期的縮寫格式,語法為’NLS_DATE_LANGUAGE = language’
ex1.
select sysdate, to_char(sysdate,’Month DD,YYYY HH:MI:SS’) aa from dual;
SYSDATE AA
———- ————————–
27-SEP-07 September 27,2007 11:40:07
–◎ 轉換數字欄位資料成自定格式文字串
–◎ ‘nlsparams’可用來定義下列數字格式
— 1. 小數點(.)
— 2. 每三位為一單位的區隔符號(,)
— 3. 區域性的幣值符號(NT)
— 4. 國際發行的幣值符號($)
— 設定方式;
— ‘NLS_NUMBERIC_CHARACTERS = “dg”
— NLS_CURRENCY = “text”
— NLS_ISO_CURRENCY = territory’
ex2.
select to_char(-10000,’L99G999D99MI’) aa from dual;
AA
—————
NT$10,000.00-
select to_char(-10000,’L99G999D99MI’,
‘NLS_NUMERIC_CHARACTERS=., NLS_CURRENCY=AUD’) aa from dual;
–◎ L99:Currency
–◎ G999:Group
–◎ D99:小數點
–◎ MI:負號
to_date(char[,fmt])
— 根據fmt的格式將char或varchar2的資料型態轉成date的資料型態
ex.
select sysdate, to_date(’20070808′,’YYYYMMDD’) aa from dual;
SYSDATE AA
———- ———-
21-SEP-07 08-AUG-07
to_number(char,[,fmt[,'nlsparams']])
–將數字格式的文字,轉換成數字
ex.
select to_number(’NT$10,000.00′,’L99G999D99′) aa from dual;
AA
———-
10000
select to_number(’1000′)+10 aa from dual;
AA
———-
1010
 
Oracle資料庫Date資料型態的使用
如果只要存入日期,可以利用內建函數
TRUNC(date)
來消去,時、分、秒的資料。
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(23,191)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:37
  • PL/SQL EXCEPTION(轉)

常用的exception 名稱
DUP_VAL_ON_INDEX key值重複
OTHERS 所有的例外
NO_DATA_FOUND 查詢找不到資料
TOO_MANY_ROWS
VALUE_ERROR
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(6,842)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:34
  • PL/SQL 常用轉換函數 (轉)

ABS(n) 取決對值 ABC(-5) = 5;
CEIL(n) 無條件進位 CEIL(5.9) = 6;
FLOOR(n) 無條件捨去小數 FLOOR(5.9) = 5;
MOD(m,n) 餘數 MOD(5,2) = 1;
POWER(m,n) n次方 POWER(2,3) = 23;
ROUND(m,n) 四捨五入 ROUND(2.54,1) = 2.5;
SIGN(n) n是否小於零 SIGN(-4) = -1;
SQRT(n) 平方根
TO_CHAR(n or date[,format]) TO_CHAR(sysdate,’YYYYMMDD’)
TO_NUMBER(char)
TO_DATE(char,format)
SELECT TO_DATE (’20050101′, ‘yyyy-mm-dd’) - 10
FROM DUAL

LPAD(char,m,str) 向左補字元
RPAD(char,m,str) 向右補字元
LTRIM(char, str) 向左去空白
RTRIM(char, str) 向右去空白
LOWER(char) 轉小寫
UPPER(char) 轉大寫
REPLACE(char, str1, str2) 替換字元
SUBSTR(char, m, n) 切字元
INSTR(m,n) 傳回n字串在m字串中的位置(切符號分隔字串)
ex:INSTR(’ABCD’,'CD’)=3
LENGTH(char) 字元長度
GREATEST(n1,n2) 取大值
LEAST(n1,n2) 取小值



時間日期:
SYSDATE [from DUAL]
LAST_DAY(date) date的最後一天 return date
ADD_MONTHS(date, n) date的n個月後 return date


(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(2) 人氣(37,761)

  • 個人分類:Oracle PL/SQL
▲top
  • 12月 17 週三 200816:33
  • PL/SQL 語言簡介


數學運算元

+, -, *, /, **


關係運算元

<>, !=, ^=, >, <, =


其他符號

(), ;,‘, :=, ||, –, /*


變數

a.字首一定要為字母
b.只能用 $, # 或 _ 等特殊符號
c.變數不能超過 30 個字
d.變數裡不能有空白


保留字

LOOP, WHILE…


常用資料型別

a.VCRCHAR2(max_length)
max_length: 1 ~ 32767
b.NUMBER(precision, scale)
precision: 1 ~ 38
ex. num NUMBER(10, 2)
表 num 這個變數有 8 整數, 2 位小數
c.DATE
d.BOOLEAN


程式結構

a.區塊結構
DECLARE
/PROCEDURE procedure_name(w_char IN OUT VARCHAR2,…) IS
/FUNCTION function_name(w_char IN OUT VARCHAR2,…) RETURN Boolean IS
… ( 宣告區塊 )
BEGIN
…
EXCEPTION
… ( 例外區塊 )
END;
b.宣告區塊
(1)固定型態
w_variable NUMBER(1);
(2)變動型態 ( Complier 時決定 )
w_variable table.field%TYPE;
rec_variable table%ROWTYPE;


(3)自訂型態
TYPE record_type IS RECORD
( user_default_field_name1 NUMBER(1)
user_default_field_name1 table.field%TYPE,
…
);
record_name record_type;


控制結構

(1)IF 邏輯結構
* IF – THEN – END IF
* IF – THEN – ELSE – END IF
* IF – THEN – ELSIF – END IF
* 空結構
(2)迴圈
* LOOP迴圈
LOOP
EXIT WHEN ;
END LOOP;
* WHILE迴圈
WHIEL LOOP


EXIT WHEN ;
END LOOP;
* FOR迴圈
FOR variable IN min_num .. max_num LOOP
EXIT WHEN ;
END LOOP;


例外處理

錯誤發生時會進入此區塊處理
EXCEPTION
WHEN NO_DATA_FOUND THEN
…
WHEN OTHERS THEN
…
END;
(1)系統預設
(2)NO_DATA_FOUND
TOO_MANY_ROWS
DUP_VAL_ON_INDEX
VALUE_ERROR
(3)自行宣告
user_default_exception EXCEPTION;


CURSOR敘述

DECLARE
CURSOR cursor_name IS
SELECT …
rec_cursor_record cursor_name%ROWTYPE;
BEGIN
…
OPEN cursor_name;
LOOP
FETCH cursor_name INTO rec_cursor_record;
EXIT WHEN cursor_name%NOTFOUND;
END LOOP;
CLOSE cursor_name;
…
END;
* CURSOR 宣告技巧
* CURSOR 參數
%NOTFOUND
%FOUND
%ROWCOUNT
%ISOPEN
* 動態 CURSOR
DECLARE
TYPE type_name IS REF CURSOR RETURN record_type;
cursor_name type_name;
record_name type_name;
BEGIN
OPEN cursor_name FOR
SELECT …
END;


PL/SQL table

* 結構
DECLARE
TYPE trec_chart IS RECORD
(chart_no chart.chart_no%TYPE,
pt_name chart.pt_name%TYPE );
TYPE ttab_chart IS TABLE OF trec_chart%ROWTYPE INDEX BY BINARY_INTEGER;
tab_chart ttab_chart;
BEGIN
…
END;
* 用法
tab_chart(index).chart_no := 1; ( i 可為不連續的整數 )
tab_chart.EXISTS(index)
tab_chart.COUNT
tab_chart.FIRST
tab_chart.LAST
tab_chart.PRIOR(index)
tab_chart.NEXT(index)
tab_chart.DELETE
tab_chart.DELETE(index)
tab_chart.DELETE(start_ index, end_ index)


index := tab_chart.FIRST;
WHILE index IS NOT NULL LOOP
…
index := tab_chart.NEXT(i);
END LOOP;
* EXCEPTION 狀況
IF tab_chart.chart_no(index) THEN
此敘述若 tab_chart.chart_no(index) 不存在則會觸發 NO_DATA_FOUND


(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(11,211)

  • 個人分類:Oracle PL/SQL
▲top
  • 10月 17 週五 200816:32
  • PL/SQL 建議的副檔名

副檔名 檔案內容
—————————————–
fun 函數
pro 程序
pkg 套裝程式的規格和主体
pks 只包含套裝程式規格
pkb 只包含套裝程式主体
tab 建立表格用的命令檔
ind 建立索引用的命令檔
cns 限制條件敘述
ins 安裝用命令檔
tst 測試用命令檔
ddl 通用的DDL命令檔〔修改、捨棄…〕
grt 針對物件的授權(grant)敘述
rev 針對物件的撤消(revoke)敘述
syn 建立同義字敘述
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(1,054)

  • 個人分類:Oracle PL/SQL
▲top
  • 9月 08 週一 200813:22
  • ORACLE的幾個常見小問題的詳細解答 (轉)

 ORACLE的幾個常見小問題的詳細解答
 
第一部分、SQL&PL/SQL
 [Q]怎麼樣查詢特殊字符,如通配符%與_
 [A]select * from table where name like 'A\_%' escape '\'
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(4,727)

  • 個人分類:Oracle PL/SQL
▲top
  • 9月 04 週四 200814:33
  • PL/SQL 整理 (2) 轉

 -------------------------------------------------- -------------
 1.一進頁面就能看到表中已生成數據,而不用按ctrl+f11進行查詢的語句:
在form級的觸發器when-new-form-instance中,
寫如下代碼:
go_block('XXXX');
execute_query;
要查詢的數據塊的名稱
說明:
當使用基於表建立的塊時,可使用塊裡的任何項的GO_BLOCK或者GO_ITEM找到那個塊當查詢數據到一個塊裡去,可通過execute_query進行處理
補充:用DELETE_RECORD從塊中刪除當前記錄,要改變數據庫的記錄,必須使用COMMIT_FORM
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(1) 人氣(15,784)

  • 個人分類:Oracle PL/SQL
▲top
12»

部落格文章搜尋

近期文章

  • oracle table 查表sql
  • 提交處理事務處理介面請求
  • ORALCE開發集
  • 採購到入庫的全過程表
  • JAVA SCRIPT
  • DBA SQL
  • DBA 維護
  • JDeveloper 安裝教學(轉)
  • PO與收料 SQL
  • 其他常用表

文章彙整

文章分類

toggle Oracle Tools (3)
  • Oracle 工具安裝 (2)
  • Oracle Trigger (5)
  • Oracle Form (18)
toggle Oracle SQL (3)
  • ORACLE DBA 指令 (3)
  • Oracle PL/SQL (15)
  • Oracle SQL (15)
toggle ORACLE ERP (8)
  • 採購模組 (2)
  • 其它常用表結構 (1)
  • 工具下載 (1)
  • 財務模組 (1)
  • 製造模組 (2)
  • 庫存模組 (2)
  • 業務模組 (2)
  • 專業知識 (2)
toggle 教學影音檔 (1)
  • 教學影音檔 (12)
  • 其它應用 (1)
  • ORACLE INV (1)
  • 未分類文章 (1)

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

姓名學