本節將告訴您如何使用直接要求來呼叫 Net.Data。 當您使用直接要求時,您不必在 URL 中指定巨集的名稱。 相反地,您將使用 Net.Data 定義的語法,指定 Net.Data 語言環境名稱、 將執行的 SQL 陳述式或程式,以及 URL 中任何其它的必要參數值。請參閱 DTW_DIRECT_REQUEST:啟用直接要求變數,以學習如何啟用或停用直接要求。
SQL 陳述式或程式以及其它任意指定的參數會直接傳送到所指定的語言環境, 以供處理。 因為 Net.Data 不需要讀取與處理巨集, 所以直接要求可提高執行效能。SQL、ODBC、Oracle、Java、 System、Perl 及 REXX Net.Data 提供的語言環境都支援直接要求, 且您可使用 URL、HTML 套表或鏈結來呼叫 Net.Data。
直接要求會經由傳遞 URL 或套表資料的查詢字串中的參數來呼叫 Net.Data。下列範例舉例說明了您可指定直接要求的上下文。
<a href="http://server/cgi-bin/db2www/?direct_request">any text</a>
其中的 direct_request 表示直接要求的語法。例如,下列的 HTML 鏈結包含直接要求:
<a href="http://server/cgi-bin/db2www/?LANGENV=DTW_PERL&FUNC=my_perl(hi)"> any text</a>
使用直接要求來呼叫 Net.Data 的語法,可含有資料庫或非資料庫語言環境的呼叫。
語法
>>-?--+--------------------------------------------------------------+-- ----+-| 資料庫語言環境呼叫 |---+-> | .-HTML--. | '-| 非資料庫語言環境呼叫 |-' '-DTW_DOCUMENT=--+-XML---+---&--+---------------------------+--' '-STYLESHEET=--filename--&--' >-------------------------------------------------------------->< 資料庫語言環境呼叫 .----------------------------. V | |------+----------------------+--+--LANGENV =------dblangenv----> '-| 套表資料登錄 |--&--' .----------------------------. V | >----&-------+----------------------+--+------------------------> '-| 套表資料登錄 |--&--' >-----+-SQL=--sql_stmt-------------------------------+----------> '-FUNC=--stored_proc_name--(--| 參數列示 |--)--' .----------------------------. V | >--------+----------------------+--+----------------------------| '-&--| 套表資料登錄 |--' 套表資料登錄 |---DATABASE----+-----------------------+--=---VALUE------------| +-DB_CASE---------------+ +-DTW_HTML_TABLE--------+ +-LOGIN-----------------+ +-PASSWORD--------------+ +-RPT_MAX_ROWS----------+ +-SHOWSQL---------------+ +-START_ROW_NUM---------+ '-user_defined_variable-' 參數列示 .-,-------------------------------------------------------------. V | |-----+-IN--parm_type--+-parm_value--------+---------------------+--+-> | '-"--parm_value--"--' | +-OUT--parm_type--+-parm_name--+---------------------------+ | '-parm_name--' | '-INOUT--parm_type--+-parm_name--+---+-parm_value--------+-' '-parm_name--' '-"--parm_value--"--' >---------------------------------------------------------------| 非資料庫語言環境呼叫 |---LANGENV=------lang_env----&---FUNC--=--program_name---------> .-,-----------------------. V | >----(-----+-------------------+--+---)-------------------------| '-"--parm_value--"--'
參數
下列範例顯示在使用直接要求方法時, 可用來呼叫 Net.Data 的不同方式。
下列範例使用直接要求,透過鏈結呼叫 Net.Data。
範例 1:一個鏈結,可呼叫 Perl 語言環境, 並呼叫位在 Net.Data 起始設定檔案之 EXEC 路徑陳述式中的 Perl script
<a href="http://server/cgi-bin/db2www/?LANGENV=DTW_PERL&FUNC=my_perl(hi)"> any text</a>
範例 2:一個鏈結,可呼叫 Perl 語言環境 (如前例中所述), 但傳送的字串中,URL 內的雙引號與空格字元已經過編碼
<a href="http://server/cgi-bin/db2www/?LANGENV=DTW_PERL&FUNC=my_perl (%22Hello+World%22)">any text</a>
要訣: | 您必須將 URL 中的特定字元 (如空格及雙引號) 加以編碼。在這個範例中, 參數值中的雙引號字元及空格必須分別編碼成 %22 或 + 字元。您可以使用內建函數 DTW_URLESCSEQ,來編碼必須在 URL 內編碼的任何文字。 DTW_URLESCSEQ 函數的詳細資訊,請參閱它在 Net.Data 參考手冊中的說明。 |
下列範例使用直接要求,透過套表呼叫 Net.Data。
範例 1:一種 HTML 套表, 可使用 SQL 語言環境來執行 SQL 查詢、 連接 CELDIAL 資料庫,及查詢表格
<form method="post" action="http://server/cgi-bin/db2www/"> <input type=hidden name="langenv" value="dtw_sql" /> <input type=hidden name="database" value="celdial" /> <input type=hidden name="sql" value="select * from table1 where col1=$(inputname)" /> Enter Customer name: <input type=text name="inputname" value="john" /> <input type=submit /> </form>
這個範例含有 SQL 陳述式中的替代變數,它可以使得 WHERE 子句更具變化。
下列範例使用直接要求,透過 URl 呼叫 Net.Data。
範例 1:可使用 SQL 語言環境來執行 SQL 查詢的 URL
http://server/cgi-bin/db2www/?LANGENV=DTW_SQL&DATABASE=CELDIAL &SQL=select+*+from+customer
範例 2:一個 URL,可呼叫 Perl 語言環境, 並呼叫不在 Net.Data 起始設定檔案之 EXEC 路徑陳述式中的可執行檔。
http://server/cgi-bin/db2www/?LANGENV=DTW_PERL&FUNC=/u/MYDIR/macros/myexec.pl
範例 3:呼叫 System 語言環境,並呼叫外部 Perl script 的 URL
http://server/cgi-bin/db2www/?LANGENV=DTW_SYSTEM&FUNC=perl+/u/MYDIR/macros/myexec.pl
範例 4:呼叫 REXX 語言環境、呼叫 REXX 程式,並將參數傳送給此程式的 URL
http://server/cgi-bin/db2www/?LANGENV=DTW_REXX&FUNC=myexec.cmd(parm1,parm2)
範例 5:呼叫儲存程序並將參數傳送給 SQL 語言環境的 URL
http://server/cgi-bin/db2www/?LANGENV=DTW_SQL&FUNC=MY_STORED_PROC (IN+CHAR(30)+Salaries)&DATABASE=CELDIAL