2009年12月30日 星期三

修復事件檢視器

如何刪除損毀的事件檢視器記錄檔
http://support.microsoft.com/kb/172156/zh-tw

2009年12月28日 星期一

DOS環境變數取值的方法

C:\> echo %DATE%
星期一 2009/12/28

C:\> echo %DATE:~4,10%
2009/12/28
Note: 日期變數位移4,取10個字, 中文字也算一個位移!

C:\>echo %DATE:~4,4% 年 %DATE:~9,2% 月 %DATE:~12,2% 日
2009 年 12 月 28 日

C:\>echo %time%
14:00:53.59

C:\>echo %time:~0,2%%time:~3,2%%time:~6,2%
140358

2009年11月9日 星期一

移除網際網路閘道

電腦莫名的多出個網際網路閘道,本機又不作IP分享,但又找不到官方移除設定的作法,
故採以下方式, (實機測試發現可行)

移除 XP 網際網路閘道 的方法:

Step1: 停用服務
SSDP Discovery Service : 在您的家用網路上啟用通用隨插即用裝置的搜索。
Application Layer Gateway Service : 提供網際網路連線共用和 Windows 防火牆的第三方通訊協定插件的支援。

Step2: 重新開機

2009年10月21日 星期三

DNS 遞迴查詢

DNS 的查詢方式分兩種:
 
1. Recursive Query: (適用於 DNS Client 對 DNS Server)
 
  DNS client 端只丟出一個詢問給 local DNS server,
  然後 local DNS 就會不斷地查到答案出來為止.


2. Iterative Query: (適用於 DNS Server 對 DNS Server)

  Local DNS 對其它 DNS 發出的詢問, 都只是知道一個更進一步的線索,
  然後發問者(local DNS)根據線索再去進一步找答案.


MISC:
 
*. 區網內使用的DNS服務 (屬 DNS Client 對 DNS Server),一般是 Recursive Query.
 
*. 供外部對自家域名解析用的DNS服務 (屬 DNS Server 對 DNS Server),
  一般是 Iterative Query, 所以應可以停用遞迴與轉送.
 
*. Root name server 因負載考量只接受 Iterative Query.
 

DNS 線上檢測

intoDNS checks DNS and mail servers health

DNS Quick Check

TWNIC DNS Check

2009年9月24日 星期四

免費的 DNS 代管服務

免費的 DNS 代管服務
http://www.everydns.net
http://www.dnspark.com/services/freeServices.php

http://domain.club.tw/showthread.php?t=2142
http://mydomain.com/
http://everydns.net/
http://zoneedit.com/
http://powerdns.com/
http://www.xname.org/
http://www.technopagan.org/dynamic/

PS:
1.網域名稱申請和DNS指定 http://nweb.hinet.net/
2.DNS反解和次領域申請 http://hidomain.hinet.net/hidns.html

2009年9月11日 星期五

挑選同列最大與最小

ORACLE SQL 挑選同列最大與最小



SQL> select * from t2;

A B C D
-------------------- -------------------- -------------------- ------
1111 1 1 1
2222 1 1 2
3333 2 1 1
4444 2 2 1
5555 2 2 2

SQL> select greatest(a,b,c,d), least(a,b,c,d) from t2;

GREATEST(A,B,C,D) LEAST(A,B,C,D)
-------------------- --------------------
1111 1
2222 1
3333 1
4444 1
5555 2

2009年9月3日 星期四

ORACLE PIVOT 樞紐表

網路文章,聽說11g 已支援PIVOT樞紐表的應用了!
Oracle pivot SQL Tips
http://www.praetoriate.com/t_pivot_sql.htm

Oracle Pivot examples
http://www.dba-oracle.com/t_pivot_examples.htm

2009年8月27日 星期四

Oracle 10g XE免費資料庫

資料庫大廠甲骨文推出免費的資料庫產品Oracle Database 10g XE(Express Edition)
Oracle Database XE相容於32位元的Linux及Windows作業系統,
可安裝於該產品所支援的任何硬體平台。
免費入門版資料庫產品Oracle Database XE有以下使用條件:
● 最多使用一個CPU或一個雙核心處理器。
● 最多使用1 GB記憶體。
● 每部電腦只能執行一個資料事例(instance)。
● 最多可儲存4 GB的用戶資料。
------------------------------------------------------------
● 支援多人連線 (若架在XP上,有預設10個連線數的限制)
● OracleXE_r2 安裝檔約佔211M, 安裝目錄 oraclexe約佔1.3G.
● 安裝前先設好環境變數 ORACLE_SID=XE, NLS_LANG=...;
------------------------------------------------------------
官網:
http://www.oracle.com/technology/software/products/database/xe/index.html
http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25610/toc.htm
http://www.oracle.com/technology/software/tech/dotnet/odtxedownloads.html

2009年8月17日 星期一

2009年8月10日 星期一

SQL ADD_MONTHS 自動轉換月底的日期

ADD_MONTHS 當遇到月底的日期時, 就會自動轉換找對應的月底日期.
若是一定要無視月底的特性, 找出對應的日期,我的想法是:利用case when 判斷,日期小,則置換,如...
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200903301158431K8&fumcde=

2009年6月16日 星期二

SQL取得第一筆資料

Oracle : where rownum=1
MsSQL: select TOP 1
MySQL: Limit 1

2009年4月17日 星期五

列舉資料比對

如何,在以逗點分隔的列舉資料內,找出特定ID值.
例如, 找出以下 remark 欄位資料,有值為 c, 而不是cd者.

ITEM REMARK
---------- -------------
aaa a,b
bbb b,d
ccc a, b ,c ,d
ddd ab,cd,e
 
方法:
1. 消除空白
2. 前後包逗點
3. 利用like比對資料, 如下,
 
select item, remark
from tb
where (','|| replace(remark,' ','') || ',') like ('%,c,%');
 
ITEM REMARK
---------- ------------
ccc a, b ,c ,d

 
Note: 進階一點,還可以將like的對象,與其他Table欄位關聯,像MySQL的例子這樣子...
SELECT B.item, sum(A.money) as A_money
FROM B, A
WHERE CONCAT(',', B.nos, ',') Like CONCAT('%,', A.id, ',%')
GROUP BY B.item;

2009年4月9日 星期四

MSN 9.0 移除方法

MSN 9.0 免安裝版無法移除的解決方法

1. 使用 Windows Installer CleanUp 公用程式,清除 Windows Installer 資料庫中的項目。
a. 下載並安裝 Windows Installer CleanUp 公用程式。
url:http://support.microsoft.com/default.aspx?scid=kb;zh-tw;290301
b. 啟動公用程式,再按一下公用程式所找到的任何 Messenger 項目,然後按一下 [移除]。

2. 安裝(或使用)其他版本的 MSN Messenger
a. Messenger 最新版本 http://get.live.com/messenger
b. 若原本的舊版本 MSN 仍在系統內, 利用 regedit 搜尋所有當初 msn 9.0 的安裝路徑,
並手動刪除之(滿多的呢), 然後執行舊版本 MSN, 即可恢復正常.

SQL 各季日期統計

判斷資料是屬於哪一季的,然後分別予以加總,
年度開始日期 : trunc(sysdate,'Y')
第一季的結束日期 : add_months(trunc(sysdate,'Y'),3 )-1
...
第四季的結束日期 : add_months(trunc(sysdate,'Y'),12)-1

select UNIT,
sum(case when txdate< trunc(sysdate,'Y') then AMT else 0 end) BeginAMT,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),3 )-1) then AMT else 0 end) Q1,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),6 )-1) then AMT else 0 end) Q2,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),9 )-1) then AMT else 0 end) Q3,
sum(case when txdate<=(add_months(trunc(sysdate,'Y'),12)-1) then AMT else 0 end) Q4
from TABLENAME
where txdate <= sysdate
group by UNIT;

2009年3月24日 星期二

自寫 rownum 的方法

Oracle SQL有個 rownum 的內建功能, 可以將select 的結果自動編號.


例如:找出以下表格欄位TEST1.L為偶數的資料列, 並給予編號如下,
 
select rownum, L, P, Q from test1 where mod(L,2)=0;
 
ROWNUM L P Q
--------- --------- - ---------
1 2 B 2
2 4 C 3
3 6 A 3
4 8 G 3


其實也可以用以下SQL語法,達到相同的目的,
 
select count(y.L) my_rownum, x.L, x.P, x.Q
from test1 x, test1 y
where x.L >= y.L
and mod(x.L,2)=0 --->
and mod(y.L,2)=0 ---> 注意:x,y條件皆相同
group by x.L, x.P, x.Q;
 
MY_ROWNUM L P Q
--------- --------- - ---------
1 2 B 2
2 4 C 3
3 6 A 3
4 8 G 3
 
PS:這種自身join的方法,也或許可以用在其他資料庫或不支援rownum的情況.
 
再加一個範例: 相同x.cus_id, 按照 x.risk,x.bra_id,x.pr_rank_name,x.pro_name 排名
 
select count(y.cus_id) as num,
x.cus_id,x.risk,x.bra_id,x.pr_rank_name,x.pro_name
from aaa x, aaa y
where x.cus_id = y.cus_id
and ((x.risk > y.risk) or
((x.risk = y.risk) and (x.bra_id > y.bra_id)) or
((x.risk = y.risk) and (x.bra_id = y.bra_id) and (x.pr_rank_name > y.pr_rank_name)) or
((x.risk = y.risk) and (x.bra_id = y.bra_id) and (x.pr_rank_name = y.pr_rank_name) and (x.pro_name > y.pro_name )) or
((x.risk = y.risk) and (x.bra_id = y.bra_id) and (x.pr_rank_name = y.pr_rank_name) and (x.pro_name = y.pro_name ))
)
group by x.cus_id,x.risk,x.bra_id,x.pr_rank_name,x.pro_name

2009年3月23日 星期一

各種免費網路資源

免費資源:
http://www.slime.com.tw/freeResource.htm

免費的網路傳檔硬碟: (單檔限制/刪檔時限/語系/註冊)
file dropper 檔案上傳 (5G/30天/英文/不需註冊): http://www.filedropper.com/
FlyUpload 免費網路硬碟(2G/30天/英文/不需註冊): http://www.flyupload.com/
iFile.it 免費網路硬碟(100M/30天/繁中/不需註冊): http://ifile.it/
MediaFire (100M/永不刪檔/英文/免費註冊): http://www.mediafire.com/
BaDonGo(1G/永不刪檔/多語系/免費註冊): http://www.badongo.com/

免費的貼圖空間:
XS.To: http://xs.to/
http://xs537.xs.to/xs537/09120/c15300885.gif
Pict.com: http://www.pict.com/
http://img2.pict.com/ee/1a/1f/d8c4219dc8d580b4f3519f4ae7/wrpgY/c15300.gif

轉換工具 - 網路資源

PDF Converter 提供線上 PDF 與 Office 文件(網頁文件) 的相互格式轉換:
http://www.freepdfconvert.com/

Remove PDF passwords and restrictions (such as printing, copying text, etc.)
http://freemypdf.com/

Super Screenshot 線上網頁抓取工具 :
http://www.superscreenshot.com/
PS: 測試結果, 大致都不錯, 只是部落格程式框的圖片位置有稍微跑掉,可惜.

2009年3月19日 星期四

ACCESS 排名取值

ACCESS 沒有ROW_NUMBER()的功能,因此若要排名次則改用如下的方式,
CASE 1: 在相同購買物品項目中,找出最後2次購買的資料:

SELECT X.購買物品, X.第幾次, X.價格, count(Y.購買物品) AS Rank, (X.購買物品 & '-' & X.第幾次 ) as ID
FROM DataTable AS X, DataTable AS Y
WHERE X.購買物品 = Y.購買物品 and
(X.第幾次 < Y.第幾次 or (X.購買物品 = Y.購買物品 and X.第幾次= Y.第幾次 ))
GROUP BY X.購買物品, X.第幾次, X.價格
HAVING count(Y.購買物品) <= 2;

CASE 2: 在相同購買物品項目中,僅保留最後2次購買的資料:

Delete from DataTable where (購買物品 & '-' & 第幾次 ) not in
(
SELECT (X.購買物品 & '-' & X.第幾次 ) as ID
FROM DataTable AS X, DataTable AS Y
WHERE X.購買物品 = Y.購買物品 and
(X.第幾次 < Y.第幾次 or (X.購買物品 = Y.購買物品 and X.第幾次= Y.第幾次))
GROUP BY X.購買物品, X.第幾次, X.價格
HAVING count(Y.購買物品) <= 2
)
PS:若是DataTable有主索引,則更方便操作.

2009年3月13日 星期五

SQL 流水號字串補零

輸出 "YYYYMMDD"
1. CONVERT(varchar(8), GETDATE(), 112)

輸出 "0123"
1. REPLICATE('0', 4 - LEN(CONVERT(char(4), 123))) + CONVERT(char(4), 123)
2. RIGHT('0000' + CONVERT(varchar(4), 123), 4)
3. RIGHT('0000' + CAST(123 as varchar), 4)

輸出結果:YYYYMMDD流水號 =>
1. CONVERT(varchar(8), GETDATE(), 112) + RIGHT('0000'+CAST(續號 as varchar),4)

PS:CAST 像是 CONVERT 的陽春版了.

ACCESS 多重 JOIN 疑問

ACCESS 不能同時使用兩個LEFT JOIN 嗎? 疑 ?
怎麼試都不成功...
SELECT CC.編號,CC.品名,AA.表單A數量和,BB.表單B數量和,(AA.表單A數量和-BB.表單B數量和) AS 兩表數量差異
FROM
(SELECT 表單A.編號,表單A.品名 FROM 表單A UNION SELECT 表單B.編號,表單B.品名 FROM 表單B ) AS CC
LEFT JOIN (SELECT 表單A.編號,表單A.品名,SUM(表單A.數量) AS 表單A數量和 FROM 表單A GROUP BY 表單A.編號,表單A.品名) AS AA ON CC.編號 = AA.編號
LEFT JOIN (SELECT 表單B.編號,表單B.品名,SUM(表單B.數量) AS 表單B數量和 FROM 表單B GROUP BY 表單B.編號,表單B.品名) AS BB ON CC.編號 = BB.編號

最後改變方法...把資料都先UNION ALL 起來, 雖然WORKing, 但,這種邏輯是否是當呢? 記憶體...效能...
SELECT 編號,
品名,
SUM(IIF(ST='A',數量,0)) AS 表單A數量,
SUM(IIF(ST='A',0,數量)) AS 表單B數量,
abs(SUM(IIF(ST='A',數量,數量*-1))) AS 兩表數量差異
FROM (SELECT 'A' AS ST, 編號, 品名, 數量 FROM 表單A
UNION ALL
SELECT 'B' AS ST, 編號, 品名, 數量 FROM 表單B
) AS CC
GROUP BY 編號, 品名

PS: 其他SQL 可以用case when 替換 iif 達到類似的目的.

2009年3月11日 星期三

Row_number 的使用

利用分析函數,求得排名, 再利用排名,來控制資料輸出格式.(以下為MsSQL語法,Oracle 也有類似功能)
SELECT (CASE WHEN rank2 = 1 THEN aaa ELSE '' END) AS BreakA, bbb 
--> 相同的 aaa 只出現一次,像作報表一樣
FROM
(SELECT c.aaa, c.bbb,
row_number() OVER
(partition BY c.aaa, c.bbb ORDER BY c.aaa, c.bbb) AS rank1,
row_number() OVER
(partition BY c.aaa ORDER BY c.aaa, c.bbb) AS rank2
FROM dbo.ItemA AS a LEFT OUTER JOIN dbo.ItemC AS c
ON a.ItemID = c.ItemID) AS g
WHERE rank1 = 1 ---> 類似 distinct 的效果
ORDER BY aaa, bbb

註:
row_number():逐列排名,重複資料,不允許相同排名,仍有第1,2名之分.
rank():允許有2個第1名,此時就沒有第2名,直接跳第3名.
dense_rank():允許有2個第1名,第3個則為第2名,即名次不跳號.
ACCESS 不支援,其他資料庫尚未測過.
ACCESS 可以參考自身JOIN的方法達到類似的目的.

2009年3月10日 星期二

Oracle Trunc 函數

TRUNC()函數分兩種: TRUNC(for number) 和 TRUNC(for date)
TRUNC(number[,n]): 捨去指定小數點位數後的值. 註:n若為負數則會往前捨去小數前的位數.
TRUNC(date[,fmt]): 捨去指定參數後的日期時間. fmt:'YY','MM','DD','HH','MI'等

2009年3月9日 星期一

SQL Update 特殊寫法

利用 Case When 選擇性的update 欄位內容 (Oracle 8.1.7, MsSQL, MySQL 適用)
Oracle 判斷的較不嚴謹, null 與 空字串看來相同...

表格T1:
SQL> select * from t1;

USER_ID CLASS
--------- --------------------
1 A
2
3 C

語法:
SQL> update t1 set class = (case when class is null then 'NullValue' else class end);

3 rows updated.

結果:
SQL> select * from t1;

USER_ID CLASS
--------- --------------------
1 A
2 NullValue
3 C

MsSQL 與 MySQL 的用法,有分空字串與NULL

update t1 set class = (case when class='' then 'EmptyValue' else class end);
update t1 set class = (case when class is null then 'NullValue' else class end);


於Oracle 還有decode 的用法,可以達到雷同的效果,
update t1 set class = decode(class,null,'NULLVALUE',class);
於ACCESS 還有iif 的用法,可以達到雷同的效果,
Private Sub do_sql_Click()
On Error GoTo Err_do_sql_Click


Dim SQL As String

'OK: 但沒有必要多加判斷
SQL = "UPDATE [員工資料] " & _
"SET [部門代號] = iif([部門代號]='' or [部門代號] is null ,'NullValue',[部門代號]) " & _
"WHERE [工號] = '908' "

'NG: 以空字串判斷讀不到新增record的 null也讀不到修改後的空白欄位
SQL = "UPDATE [員工資料] " & _
"SET [部門代號] = iif([部門代號]='','空字串',[部門代號]) " & _
"WHERE [工號] = '908' "

'OK! 測試發現, ACCESS 不認空字串'' 型態,用null即可包含空字串.
SQL = "UPDATE [員工資料] " & _
"SET [部門代號] = iif([部門代號] is null,'nullvalue',[部門代號]) " & _
"WHERE [工號] = '907' "

DoCmd.RunSQL SQL
MsgBox (SQL)


Exit_do_sql_Click:
Exit Sub

Err_do_sql_Click:
MsgBox Err.Description
Resume Exit_do_sql_Click

End Sub

補充:
於 MsSQL 必須留意, 空字串''與 NULL 是不同的!
空字串於 CASE WHEN 可以用 CLASS = '' 表示比較條件式,
NULL 於 CASE WHEN 應該用 CLASS IS NULL 表示條件式, 或利用 ISNULL(CLASS,'NULLVALUE')轉換之.

PS: 其他資料庫尚未實測.

2009年3月6日 星期五

SQL Group By 直轉橫

Oracle SQL, MySQL, 通用的語法, 一般的group by 統計方式,為直列式由上而下逐筆顯示,
以下方式, 通常用於將特定已知的"資料",轉向作為[欄位]後,進行分析統計.
簡單的說, 就是原來直放的資料,變成橫放.
範例:
按各個userid, 橫向呈現於各個 CLASS_A,B,C 統計分析相關資料出現的次數.
SELECT user_id, sum(CLASS_A) AS CLASS_A,
sum(CLASS_B) AS CLASS_B,
sum(CLASS_C) AS CLASS_C
FROM ( select user_id,
(CASE WHEN CLASS = 'a' THEN 1 ELSE '' END) AS CLASS_A,
(CASE WHEN CLASS = 'b' THEN 1 ELSE '' END) AS CLASS_B,
(CASE WHEN CLASS = 'c' THEN 1 ELSE '' END) AS CLASS_C
from T1
)
GROUP BY USER_ID
ORDER BY USER_ID;


簡化的作法,結果一樣....

SELECT user_id,
sum(CASE WHEN CLASS = 'a' THEN 1 ELSE '' END) AS CLASS_A,
sum(CASE WHEN CLASS = 'b' THEN 1 ELSE '' END) AS CLASS_B,
sum(CASE WHEN CLASS = 'c' THEN 1 ELSE '' END) AS CLASS_C
FROM T1
GROUP BY USER_ID
ORDER BY USER_ID;

PS:若是ACCESS 資料庫, case when 換成iff 的語法即可,
如: SUM(IIF(CLASS = 'a', 1, 0))

SQL Case When 的使用

Oracle SQL, MySQL, MsSQL 通用的語法, 可以選擇性的加工輸出欄位值:
範例 1:

select user_id,
   (CASE WHEN CLASS = 'a' THEN 1 ELSE '' END) AS CLASS_A,
   (CASE WHEN CLASS = 'b' THEN 1 ELSE '' END) AS CLASS_B,
   (CASE WHEN CLASS = 'c' THEN 1 ELSE '' END) AS CLASS_C
from T1;

範例 2:

select id, (CASE WHEN 數據 = 0 THEN '沒有數據' ELSE 數據 END) AS "數據值"
from T2;

PS:還可以用於 update set=(case when...), where xxx=(case when...) 敘述中

2009年3月4日 星期三

旅夜書懷

旅夜書懷       唐 杜甫
-------------------
細草微風岸,危檣獨夜舟,
星垂平野闊,月湧大江流。
名豈文章著,官應老病休,
飄飄何所似,天地一沙鷗。

春暮

春暮               作者: 曹豳
------------------------
門外無人問落花,綠陰冉冉遍天涯。

林鶯啼到無聲處,青草池塘獨聽蛙。

靈格斯詞霸綠色便攜版

Lingoes 靈格斯詞霸 是一款簡明易用的詞典與文本翻譯軟體,
其綠色便攜版本, 無需安裝即可使用, 內置基礎英漢詞典, 即時翻譯等。
官網: http://www.lingoes.cn/zh/index.html
下載: http://www.lingoes.cn/zh/translator/trans_downsoft.php?id=69

2009年2月28日 星期六

成功更換版面

試了兩天,上載範本總是無法成功,
最後引用 http://btemplates.com/
終於 ok 了.

2009年2月24日 星期二

Access 格式化日期函式

SELECT TEST.名字,
TEST.出生日期,
Year(Date()) & Format(TEST.出生日期,"/MM/DD") as 今年生日
FROM TEST



Recordset.Filter =
"今年生日 >= '" & Format(Date(),"YYYY/MM/DD") &
"' AND 今年生日 <= '"& Format(Date()+7,"YYYY/MM/DD") & "'"

SELECT TEST.名字, TEST.出生日期 FROM TEST
WHERE ( Year(Date()) & Format(TEST.出生日期,"/MM/DD"))
>= Format(Date(),"YYYY/MM/DD")
and ( Year(Date()) & Format(TEST.出生日期,"/MM/DD"))
<= Format(Date()+7,"YYYY/MM/DD");

自身Join排名取值技巧

以下是一個典型的分組排名,把A欄視為學生,B欄視為班別, C,D欄視為各科成績,
希望找出各班的排名, 或者找出指定名次的學生.

解題時,以B欄為群組的分類,並依據是C欄與D欄值的大小排名,名次其實就是找出比自己大的筆數再加上自己.

PS:這種邏輯下,可能出現兩個同分的第1名,而第2名.從缺的情況

資料表:T2
 
A B C D
--------------------
[1111] [1] [1] [1]
[2222] [1] [1] [2]
[3333] [2] [1] [1]
[4444] [2] [2] [1]
[5555] [2] [2] [2]
 
排名:以count(y.a)表示
 
select x.a
from t2 x, t2 y
where x.b = y.b and
( ((x.c < c="y.c">
OR
(x.a=y.a and x.b=y.b and x.c=y.c and x.d=y.d)
)
group by x.a, x.b, x.c, x.d
having count(y.a) = 1 --------> 只顯示排名為1的資料,
order by x.a, x.b, x.c, x.d
 
結果:
 
A
------
[2222]
[5555]


Access [保留字] 的用法

Access 欄位名稱使用保留字,導致 UPDATE 陳述式的語法錯誤。

如果已經使用保留字,您可以在每個保留字出現之處使用括號 ([ ]) 括起來,
例如: [password] , 以避免產生錯誤訊息。 但是最好的解決方案是把名稱變更為非保留字。

http://office.microsoft.com/zh-tw/access/HA100306431028.aspx

Outlook 發信自動確認

參考ClickYes這個軟體說明...
http://www.contextmagic.com/express-clickyes/

Oracle 動態SQL語句

SET SERVEROUTPUT ON
DECLARE

 v_sql VARCHAR(200);
 v_cursor NUMBER;
 v_sno NUMBER;
 v_stat NUMBER;
BEGIN
 v_sql := 'SELECT 123 SNO FROM DUAL'; --自訂動態SQL語句
 v_cursor := dbms_sql.open_cursor; --打開游標
 dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析動態SQL語句
 dbms_sql.define_column(v_cursor, 1, v_sno); --定義列
 v_stat := dbms_sql.execute(v_cursor); --執行動態SQL語句
 v_stat := dbms_sql.fetch_rows(v_cursor); --取出一列
 dbms_sql.column_value(v_cursor, 1, v_sno); --查詢定義列結果
 dbms_sql.close_cursor(v_cursor); --關閉游標
 dbms_output.put_line('return value: 'v_sno); --顯示查詢結果
END;


EXCEL 儲存格分行與還原

分行: 【ALT】+【ENTER】
還原: =CLEAN(B1)

Form6i 如何控制滑鼠指標

SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'BUSY');
-- 程式執行...
SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT');

測試1

使用class="h200"限制區塊高度200點,資料過高自動出現捲軸.
開始位置
限制寬度585點,過寬會自動折行
123456789-123456789-123456789-123456789-123456789-123456789-12345678-123456789-
使用 pre 標籤,定位格式縮排.

< = &lt; > = &gt; & = &amp;
select *
from dual;


使用class="h200"限制區塊高度200點,資料過高自動出現捲軸.
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
結束位置

不限高度無捲軸的範圍

插入粗體標記
變更字型大小