本节将告诉您如何使用直接请求来调用 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 的语法中可以包含一个对数据库语言环境或非数据库语言环境的调用。
语法
>>-?--+--------------------------------------------------------------+-- ----+-| Database language environment call |-----+-> | .-HTML--. | '-| Non-database language environment call |-' '-DTW_DOCUMENT=--+-XML---+---&--+---------------------------+--' '-STYLESHEET=--filename--&--' >-------------------------------------------------------------->< Database language environment call .-------------------------------. V | |------+-------------------------+--+--LANGENV =----------------> '-| Form data entry |--&--' .-------------------------------. V | >-------dblangenv----&-------+-------------------------+--+-----> '-| Form data entry |--&--' >-----+-SQL=--sql_stmt-------------------------------------+----> '-FUNC=--stored_proc_name--(--| Parameter list |--)--' .-------------------------------. V | >--------+-------------------------+--+-------------------------| '-&--| Form data entry |--' Form data entry |---DATABASE----+-----------------------+--=---VALUE------------| +-DB_CASE---------------+ +-DTW_HTML_TABLE--------+ +-LOGIN-----------------+ +-PASSWORD--------------+ +-RPT_MAX_ROWS----------+ +-SHOWSQL---------------+ +-START_ROW_NUM---------+ '-user_defined_variable-' Parameter list .-,-------------------------------------------------------------. 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--"--' >---------------------------------------------------------------| Non-database language environment call |---LANGENV=------lang_env----&---FUNC--=--program_name---------> .-,-----------------------. V | >----(-----+-------------------+--+---)-------------------------| '-"--parm_value--"--'
参数
以下示例显示了可以在使用直接请求方法时调用 Net.Data 的不同方式。
以下示例使用直接请求通过链来调用 Net.Data。
例 1:一个调用 Perl 语言环境并调用 Net.Data 初始化文件中 EXEC 路径 语句内的 Perl 脚本的链。
<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:一个将执行 SQL 查询(使用 SQL 语言环境)的 HTML 表, 它还连接到 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:一个调用 Perl 语言环境并调用不在 Net.Data 初始化文件的 EXEC 路径 语句内的可执行文件的 URL。
http://server/cgi-bin/db2www/?LANGENV=DTW_PERL&FUNC=/u/MYDIR/macros/myexec.pl
例 3:一个调用 System 语言环境并调用外部 Perl 脚本的 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