管理及程式設計指南

不使用巨集呼叫 Net.Data (直接要求)

本節將告訴您如何使用直接要求來呼叫 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--"--'
 

參數

DTW_DOCUMENT
指定將 Net.Data 以輸出方式傳回的文件類型。 可用值為 XML 或 HTML。此參數可選用的,若您未加以指定,則視為使用 HTML。

DTW_STYLESHEET
指定當顯示 XML 時 Net.Data 應使用的樣式表。 此參數是可選用的,僅於 DTW_DOCUMENT=XML 時有關。

樣式表
在伺服器上指定樣式表的檔名。

資料庫語言環境呼叫
指定對 Net.Data 直接要求,由 Net.Data 呼叫資料庫語言環境。

套表資料登錄
可讓您指定 SQL 變數的設定,或要求簡易 HTML 格式的參數。請參閱 Net.Data 參考手冊中變數的章節, 以學習更多關於這些變數的資訊。

DATABASE
指定 Net.Data 應傳送 SQL 要求的目的資料庫。 此為必要參數。

DB_CASE
指定 SQL 陳述式的大小寫。

DTW_HTML_TABLE
指定 Net.Data 應該傳回 HTML 表格或預先格式化的文字表格。

DTW_DOCUMENT
指定 Net.Data 是否應該顯示結果為 XML 或 HTML。 可用值為 XML 或 HTML。未指定關鍵字時,則 HTML 為預設值。

LOGIN
指定資料庫使用者 ID。

PASSWORD
指定資料庫通行碼。

RPT_MAX_ROWS
指定在其報告中,函數應傳回的最大列數值。

SHOWSQL
指定 Net.Data 是否應隱藏或顯示執行中的 SQL 陳述式。

START_ROW_NUM
指定應啟動其報告函數的列數。

user_defined_variable
傳送給 Net.Data 並提供必要資訊,或影響 Net.Data 行為的變數。使用者定義的變數是為您的應用程式而定義的變數。

VALUE
指定 Net.Data 變數的值。

LANGENV
指定 SQL 陳述式或儲存程序呼叫的目標語言環境。如果語言環境是一種資料庫語言環境, 則也必須指定資料庫名稱。

dblangenv
資料庫語言環境的名稱:
  • DTW_SQL
  • DTW_ODBC
  • DTW_ORA

SQL
表示直接要求可指定列入 SQL 陳述式的執行。

sql_stmt
指定一字串,此字串含有任何可用動態 SQL 執行的有效 SQL 陳述式。

FUNC
表示直接要求可指定儲存程序的執行。

stored_proc_name
指定任何有效的 DB2 儲存程序名稱。

parm_type
指定 DB2 儲存程序的任意有效參數類型。

parm_name
指定任意有效的參數名稱。

parm_value
指定 DB2 儲存程序的任意有效參數值。

IN
指定 Net.Data 應使用此參數將輸入資料傳送給儲存程序。

INOUT
指定 Net.Data 應使用此參數將輸入資料傳送給儲存程序, 並從語言環境傳回輸出資料。

OUT
指定語言環境應使用此參數,以從儲存程序傳回輸出資料。

非資料庫語言環境呼叫
指定直接要求給 Net.Data,由 Net.Data 呼叫非資料庫語言環境。

LANGENV
指定目標語言環境,以執行此函數。

lang_env
指定非資料庫語言環境的名稱:
  • DTW_PERL
  • DTW_REXX
  • DTW_SYSTEM

FUNC
表示直接要求可指定程式的執行。

program_name
指定含有要執行之程式的檔案。

parm_value
指定函數的任意有效參數值。

直接要求範例

下列範例顯示在使用直接要求方法時, 可用來呼叫 Net.Data 的不同方式。

HTML 鏈結

下列範例使用直接要求,透過鏈結呼叫 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 參考手冊中的說明。

HTML 套表

下列範例使用直接要求,透過套表呼叫 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

下列範例使用直接要求,透過 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


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]