PL/SQL DEVELOPER 6 模板格式設計應用指南(原譯)
2024-07-21 02:05:40
供稿:網友
pl/sql developer 6模板使用系列文檔(二)
模板格式設計應用指南(譯)
創建和修改模板
要修改已經存在的模板,請選擇要修改的模板單擊右鍵打開快捷菜單。這將打開顯示模板內容的文本編輯器。文本中含有完整的模板內容,包括變量、查詢等等。下面章節將介紹模板文本的詳細格式。
要創建一個新的模板,右擊你要創建的文件夾,從快捷菜單中選擇 [new template]。你首先要輸入模板的名稱,然后將會彈出模板編輯器。你也可以通過[new folder]這個菜單來創建一個新的文件夾。
模板文本
模板文本包括文本及變量。文本可以不會經過任何修改簡單的拷貝到源文件。拿一個僅包含文本”commit;”名為commit的模板為例,雙擊模板后,commit;這段文本將直接插入到原文的光標位置。在模板中用中括號括起為的表示為變量(見下文),所以如果你要將中括號當做一個文本使用請用兩個中括號代替,例如:[[option]]
自定義變量
模板文本中的變量代碼將被文本置換,這些置換的文本可以是一個固定的值,像當前日期或者當前的用戶名,或者是用戶特別定義的東西。當調用模板時這些用戶變量將顯示在打開的窗體上。下面是一個定義了變量名字[name]和類型[type]函數模板的例子:
create or replace function [name] return [type] is
begin
return(result);
end [name];
當調用模板時,用戶可以將特定的值賦于name和type這兩個變量。如你所看到的,name變量使用兩次,用戶將只被提示一次,并且都被替換成相同的值。
l 缺省值
為變量定義的缺省值可以簡單的放在變量名稱的后面。你可以使用下面的描述來定義varchar2是缺省的函數類型function type:
[type = varchar2]
l 固定列表
對于一些有固定值列表的變量,你可以定義它的選擇列表值。如:要限制function的變量類型type為varchar2, number 和 date,你可按下面的方法定義:
[type = varchar2, *number, date]
第一個帶星號的列表值表示列表缺省值
l 可選列表
對于要提供給用戶一列選擇值,又允許輸入其它的值的變量,在列表的最后增加...這個值即可。
[type = varchar2, number, date, ...]
l 可描述列表
要用文本替換列表內容,你可以為每個列表定義描述文本,就像下面例子一樣,描述文本加上冒號再加上值:
[level = write no database state:wnps, read no database state:rnds, ...]
l 復選框
真假值選擇的變量你可以用復選框定義。放置一個斜線/在兩個值的中間,斜線左邊表示未選中時的值,右邊表示選中的值。下面的變量表示在復選框未選中時將插入文本for each row,當復選框選中后將插入文本for each statement。
[statement level? = for each row / for each statement]
如果你的文本中包含特殊的字符(如comma's, brackets, and so on),你可以用括號括起來。下面是一個使用用戶自定義變量創建觸發器trigger的模板例子。
create or replace trigger [name]
[fires = before, after, instead of] [event = insert, update, delete, ...]
on [table or view]
[statement level? = for each row/for each statement]
declare
-- local variables here
begin;
end [name];
提示,你可以在一個模板中使用斜線分隔符分隔的方法創建多個程序單元。通過這種方法你可以為一些格式在一個程序文件中創建一個模板。
當使用這個模板時,用戶將彈出如下所示的對話框提示輸入變量的值:
固定變量
除了用戶自定義變量外你還可以附加使用固定變量。這些用來置換變量的文本不是由用戶定義,而是由系統(date, username)或者是模板開發人員(queries, text)定義。
l 系統變量
以下為定義的4個系統變量
$osuser 操作系統的用戶名
$dbuser 當前登錄數據庫的用戶
$date 當前日期
$time 當前時間
下面例子的頭兩行將插入操作系統的用戶及當前日期時間到源文件:
-- author : $osuser
-- created : $date $time
-- purpose : [purpose]
procedure [name] is
begin
;
end [name];
注意系統變量在模板文本中不使用中括號,但是需在前面加$符號。
如果你不想采用系統變量,但要應用系統變量的原文本,你可以在文本的前面再增加第二個$符號。例如:
-- $$date$ $revision$
結果出來的文本將是$date$ $revision$。
l 光標位置
光標位置變量將定義當模板文本插入到編輯器后光標的定位。只要將[#]放置到想要的位置即可:
loop
[#]
end loop;
l 查詢變量
你可以使用查詢來生成模板的列表值。下面的例子定義了一個查詢變量seq_query,接著應用到sequence變量的可選列表:
[$query seq_query =
select lower(object_name) from user_objects
where object_type = 'sequence'
order by object_name]
select [sequence=$seq_query,...].nextval into [variable name] from dual;
sequence是一個可選列表,因為后面加了文本",...",意思是用戶可以手工輸入其它的值。查詢結果集可以簡單的看作是用逗號分隔的列表值。
l 包含和去除文本
你可以通過另一個變量來包含和去除模板的文字。在下面的例子里,當用戶輸入了查詢條件(search condition)的值后將自動加入where字符。
select [item list]
into [variable list]
from [table list]
[+search condition=where] [search condition];
結果是,用戶不用在查詢條件[search condition]中鍵入'where'文本。要去除一塊文本,可以將"+變量名"改為"-變量名"。
l 文本變量
你可以在模板中定義文本變量,并且在模板的其它部分用這些變量。假如你想有選擇的包括一大塊文本,這是非常有用的。下面的例子中,可以根據用戶需要是否包括一個出錯處理塊。
[$text exception_block=
exception
when no_data_found then ...
when too_many_rows then ...
when others then ...
end;]
select [item list]
from [table list]
into [variable list]
where [search condition];
[exception block =/$exception_block]
模板圖標
在模板窗口的樹形列表中每個模板顯示一個圖標。模板窗口將查找與模板文件名相同的位圖文件。如模板cursor.tp,如果存在的話,它將使用相同文件夾下的cursor.bmp位圖,如果位圖不存在,它將查找當前目錄子目錄下的cursor.bmp文件。如果這個位圖還是沒有,它將查找當前目錄和子目錄的default.bmp文件。
用于模板圖標必須是16色的16*16大小的位圖。
葉正盛 (譯)
2005-03-23