清單2. 測試過程 TRUNCATE_TABLE
/* create and insert some values into the table tab1 */
CREATE TABLE tab1 (col1 INTEGER NOT NULL PRIMARY KEY, col2 VARCHAR(15) )
DB20000I The SQL command completed successfully.
INSERT INTO tab1 VALUES ( 1, 'some data' ), ( 2, NULL )
DB20000I The SQL command completed successfully.
/* verify the current contents of table tab1 */
SELECT * FROM tab1
COL1 COL2
----------- ---------------
1 some data
2 -
2 record(s) selected.
/* Call the truncate stored procedure for the DB2INST1 schema, and the table tab1 */
CALL truncate('DB2INST1', 'tab1')
Return Status = 0
/* Verify that the table contents have been truncated. */
SELECT * FROM tab1
COL1 COL2
----------- ---------------
0 record(s) selected.
/* Insert some new values into the tab1 table */
INSERT INTO tab1 VALUES ( 2, 'some new data' ), ( 3, NULL )
DB20000I The SQL command completed successfully.
SELECT * FROM tab1
COL1 COL2
----------- ---------------
2 some new data
3 -
2清單 3. 用戶定義函數 HOST_NAME 的簽名
>>--HOST_NAME--( )-------------><
該函數訪問存儲在 DBINFO 結構中的應用程序 ID 並解碼客戶機的 IP 地址(它是應用程序 ID 的一部分)。然後便使用 C 庫函數“gethostbyaddr”來解析該 IP 地址的名稱,該函數在必要時將訪問名稱服務器或其他源(比如 /etc/hosts)。
IP 地址是應用程序 ID 中前面 8 字節的編碼,或者使用 "*LOCAL" 來代表本地連接。對於本地連接,解析的是 IP 地址為 127.0.0.1 的主機名。
注意:
由於 DRDA 的需求,如果非本地 IP 地址的第一個字符初始為‘0’到‘9’,就將之映射到字母‘G’到‘P’。而在該名稱查找之前,要將該映射反過來進行。
清單 4 演示了 HOST_NAME 函數的執行。可以在“下載”小節中找到該腳本 host_name_example.db2 的源代碼。
清單4. 測試函數 HOST_NAME( )
下面這個例子測試演示了用以獲取本地連接主機名的函數的執行。
在該場景中,DB2 數據庫駐留在一個本地 AIX 機器上。
地址 127.0.0.1 在 /etc/hosts 文件中被映射到計算機名 demoaix:
/* connect to the local database */
connect to sample
Database Connection Information
Database server = DB2/6000 8.1.2
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
/* execute the host_name function */
values host_name()"
1
------------------------------------------------
demoaix
1 record(s) selected.
下一個例子測試演示了遠程連接上的函數的執行。
在該場景中,DB2 數據庫與上面一樣駐留在同一 AIX 機器上。
到 AIX 上數據庫的連接是由一個 Windows 2000 客戶機建立的;
該客戶機的名字為 mycomputer。
record(s) selected.
/* Call the truncate procedure with a NULL schema */
CALL truncate(NULL, 'tab1')
Return Status = 0
/* Verify that the table contents have been truncated. */
SELECT * FROM tab1
COL1 COL2
----------- ---------------
0 record(s) selected.
Sybase 的 host_name 函數
Sybase 數據庫中的 host_name( ) 函數返回的是 客戶機進程(非 Adaptive Server 進程)的當前主機名,也就是運行該應用程序的計算機的主機名而非數據庫服務器的主機名。
清單3 中展示了用戶定義函數 HOST_NAME 的簽名。