和函数一起使用这些变量,帮助定制使用语言环境处理 FUNCTION 块的方式。每个变量都有一个缺省值。您可以通过为变量指定一个新值来覆盖缺省值。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X |
| X | X | X | X |
目的
指定在调用一个数据库函数时要访问的数据库或 ODBC 数据源。此变量可以在一个宏内更改多次, 以访问多数据库或多 ODBC 数据源。
OS/400 操作系统:此变量是可选的。缺省地,Net.Data 指定 DATABASE="*LOCAL";而 DTW_SQL 语言环境使用本地关系数据库目录项。
Windows NT、OS/2 和 UNIX 操作系统:在调用任何数据库函数之前先定 义此变量,使用 DTW_ORA (Oracle) 语言环境除外。另外,在同一个 HTML 块中,通过同一语言环境 访问多个数据库时,必须使用“现场连接”。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DATABASE="dbname"
| 值 | 说明 |
|---|---|
| dbname | Net.Data 要连接至的数据库的名称。 |
例
例 1:指定连接到 CDLDIAL 数据库进行 SQL 操作
%DEFINE DATABASE="CELDIAL"
%FUNCTION (DTW_SQL) getRpt() {
SELECT * FROM customer
%}
%HTML (report){
%INCLUDE "rpthead.htm"
@getRpt()
%INCLUDE "rptfoot.htm"
%}
调用函数 getRpt 时访问数据库 CEDDIAL 。
例 2:以 DTW_ASSIGN 覆盖前一 DATABASE 定义
%DEFINE DATABASE="DB2C1"
...
%HTML(monthRpt){
@DTW_ASSIGN(DATABASE, "DB2D1")
%INCLUDE "rpthead.htm"
@getRpt()
%INCLUDE "rptfoot.htm"
%}
不管 DATABASE 先前的值是什么,此 HTML 块将查询数据库 DB2D1。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定将哪种情况用于 SQL 命令,并把所有字符转换成大写或小写的。如果此变量未定义 ,则缺省动作是不转换 SQL 命令字符。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DB_CASE="UPPER"|"LOWER"
| 值 | 说明 |
|---|---|
| UPPER | 把所有 SQL 命令字符转换为大写。 |
| LOWER | 把所有 SQL 命令字符转换为小写。 |
例
例 1:指定将所有 SQL 命令用大写
%DEFINE DB_CASE="UPPER"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
| X |
|
|
|
|
目的
为和一个本地 DB2 子系统的连接分配一个计划。此变量指定在 Net.Data 将访问的本地 DB2 子系 统上针对 Net.Data SQL 语言环境的计划名。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
要求:为使宏中此变量的值能够生效,它必须列在 SQL 语言环境 的 ENVIRONMENT 语句中。
值
DB2PLAN="plan_name"
| 值 | 说明 |
|---|---|
| plan_name | DB2 计划的名称。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中指定计划
%DEFINE DB2PLAN="DTWGAV22"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
| X |
|
|
|
|
目的
建立一个和本地 DB2 子系统的连接。这些变量指定 了 Net.Data 将要访问的本地 DB2 子系统的子系统标识符。每个宏只允许有一个本地 数据库连接。
要求:为使宏中此变量的值能够生效,它必须列在 SQL 语言环境 的 ENVIRONMENT 语句中。
值
DB2PLAN="subsytem_id"
| 值 | 说明 |
|---|---|
| subsystem_id | DB2 子系统的名称。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中指定一个子系统 ID
%DEFINE DB2SSID="DBNC"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
将 HTML 标记和文本在不能识别 APPLET 标记的浏览器中显示出来,并和 Applet 语言 环境一起使用。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DTW_APPLET_ALTTEXT="HTML_text_and_tags"
| 值 | 说明 |
|---|---|
| HTML_text_and_tags | 针对不能识别 APPLET 标记的浏览器的 HTML 标记和文本。 |
例
例 1:指示一个 Web 浏览器限制的替换文本
%DEFINE DTW_APPLET_ALTTEXT = "<P>Sorry, your browser is not java-enabled."
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
|
| X |
|
|
|
目的
转换 NUMERIC、DECIMAL、INTEGER 和 SMALLINT 数据类型,它们作为针对 DTW_SQL 语言环境的一 个 SQL 操作的结果而返回。变量 DTW_EDIT_CODES 是一个字符型字符串,对应于 DTW_SQL LE 将构建 的表格的结果列;例如,DTW_EDIT_CODES 中的第五个字符将应用于结果集的第五列(如果该列是支 持的类型之一)。这个单一的字符可以是支持系统提供的任何编辑代码,这在数据描述说明参考中有定义。
例如,一个 DECIMAL(6,0) 字段通常将显示为字符型字符串‘112698’。通过在 变量 DTW_EDIT_CODES 中为该列指定一个编辑码‘Y’,结果表中相应的列将作为一个字符型字符串显示, 代表日期‘ 11/26/98’。
提示:把一个用户提供的编辑码应用到某一列,而该列会导致一个具有非 数字字符(例如逗号或货币符号)的字符型字符串,则当此字符串送还给服务器以继续处理 Net.Data 宏中的后继操作时,将会引起语法错误。例如,非数值列值可能用于后继的 DTW_SQL 函数调用中的数 值型比较,则引起语法错误。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DTW_EDIT_CODES="edit_code"
| 值 | 说明 |
|---|---|
| edit_code | 指定一个字符型字符串,它相应于 SQL 语言环境构建的表格的 结果列。 |
例
例 1:
@DTW_ASSIGN(DTW_EDIT_CODES "JJLJJ*******Y")
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
|
| X |
|
|
|
目的
在将字符参数传递到程序或存储过程时,向语言环境指出这些字符参数(数据类型 为 CHAR 或 CHARACTER)是否要用空格填充。
对于 IN 或 INOUT 参数,如果参数值的长度小于指定的精度,则将在参数值的右侧插入空格, 直至参数值的长度与精度相同。
对于 OUT 参数,参数值被设置为具有精确的空格。
在对程序或存储过程的调用之后,将从 OUT 和 INOUT 参数值中除去所有尾随的空格。
在 Net.Data 初始化文件中设置此变量,以便为所有的宏指定一个值。可以通过宏中的定义覆盖值。如果宏中没有定义 DTW_PAD_PGM_PARMS,它将使用 Net.Data 初始化文件中的值。
“直接调用”和 SQL 语言环境支持 DTW_PAD_PGM_PARMS。
值
DTW_PAD_PGM_PARMS="YES"|"NO"
| 值 | 说明 |
|---|---|
| YES | 在将参数传递到程序或存储过程之前,所有的 IN 和 INOUT 字符参数值 将被调整并根据定义的参数精度填充空格。在对程序或存储过程的调用之后,将除去尾随空格。 |
| NO | 在将参数传递到程序或存储过程时,不对字符参数值(以 NULL 结束的 值)添加补空。在调用程序或存储过程之后不除去尾随空格。 |
例
例 1:用空格填充参数
DTW_PAD_PGM_PARMS="YES"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
标识一个表格变量,SQL 语言环境用它来存储来自一个查询的表格数据。然后可以使用此表格,例如,用在分析表格数据的 REXX 程序中。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DTW_SAVE_TABLE_IN="table_name_var"
| 值 | 说明 |
|---|---|
| table_name_var | 针对 SQL 语言环境的一张表格的名称,用来存储来自查询的表 格数据。 |
例
例 1:在一个 REXX 调用中使用的先前定义的表格变量
%DEFINE theTable = %TABLE(2)
%DEFINE DTW_SAVE_TABLE_IN = "theTable"
%FUNCTION(DTW_SQL) doQuery() {
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='MONITOR'
%}
%FUNCTION(DTW_REXX) analyze_table(myTable) {
%EXEC{ anzTbl.cmd %}
%}
%HTML(doTable) {
@doQuery()
@analyze_table(theTable)
%}
REXX FUNCTION 块调用 REXX 程序 anzTbl.cmd,这使用表格变量 theTable 来分析表格中的数据。变量 theTable 是从前一 SQL 函数调用中返回的。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定一个数据库语言环境,针对一个查询的结果集中的总行数应当指定为 TOTAL_ROWS。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
OS/400、OS/2、Windows NT 和 UNIX 用户: 要将此变量传递到语言环境,把它作为一个 IN 变量包括在 Net.Data 初始化文件中数据库语言环境 的 ENVIRONMENT 语句中。参阅 Net.Data 管理与程序设计指南的配置一章, 进一步学习数据库语言环境语句。
OS/390 用户:当宏中定义了 DTW_SET_TOTAL_ROWS 之后, 它将被隐式地传递到数据库语言环境中。
性能提示:如果将 DTW_SET_TOTAL_ROWS 设置 为 YES,这将影响其性能,因为为了确定总行数,数据库语言环境需要检索所有行。
值
DTW_SET_TOTAL_ROWS="YES"|"NO"
| 值 | 说明 |
|---|---|
| YES | 把总行数的值指定为 TOTAL_ROWS 变量。重 要:如果您想要引用变量 TOTAL_ROWS 来确定从查询返回的行数,则必须设置这个值。 |
| NO | Net.Data 不设置 TOTAL_ROWS 变量,TOTAL_ROWS 在宏中不能引用。NO 是缺省。 |
例
例 1:定义 DTW_SET_TOTAL_ROWS 使用 TOTAL_ROWS
%DEFINE DTW_SET_TOTAL_ROWS="YES"
...
%FUNCTION (DTW_SQL) myfunc() {
select * from MyTable
%report {
...
%row
...
%}
<P>Your query is limited to $(TOTAL_ROWS) rows. The query returned too many rows.
%}
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
| X |
|
|
|
|
目的
建立一个和远程数据库服务器的连接。此变量 指定了本地 DB2 子系统中用于标识远程服务器的名称。LOCATION 的值必须 在 Communications Database (CDB) 中的 SYSIBM.SYSLOCATIONS 表格中定义。如果未 在宏中定义过这个变量,那么由宏发出的任何 SQL 请求都将在本地 DB2 子系统中执行。
要求:为使宏中此变量的值能够生效,它必须列在 SQL 语言环境 的 ENVIRONMENT 语句中。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
LOCATION="remote_dbase_name"
| 值 | 说明 |
|---|---|
| remote_dbase_name | 一个有效远程数据库服务器的名称,它在 CDB 的 SYSIBM.SYSLOCATIONS 表格中定义。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中定义远程数据库的位置
%DEFINE LOCATION="QMFDJ00"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X |
| X | X | X | X |
目的
通过向数据库语言环境传送一个用户标识符,提供对保护数据的访问。这个变量与 PASSWORD 一起 使用 DB2 的安全性算法。
OS/400 用户:如果 DATABASE 变量没有定义或者该变量 设置为 "*LOCAL",则 OS/400 将忽略 LOGIN 和 PASSWORD。数据库的访问是通过 Net.Data 在其下 运行的用户概要来获得了。
安全性提示:在可以将 这个值编码在 Net.Data 宏中的同时,也建议让应用程序用户在 HTML 表中输入用户标识符。另外, 使用 Web 服务器 ID 的缺省值提供的访问级别可能不满足您的安全性需要。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
LOGIN="database_user_id"
| 值 | 说明 |
|---|---|
| database_user_id | 一个有效的数据库用户标识符。缺省时,使用用于启动 Web 服务器的用户 ID。 |
例
例 1:限制访问用户标识符,DB2USER
%DEFINE LOGIN="DB2USER"
例 2:使用 HTML 格式输入行
USERID: <INPUT TYPE="text" NAME="LOGIN" SIZE=6>
这个例子中显示可以作为 HTML 一部分的一行,应用程序用户可以用它来输入其用户 标识符。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
|
|
| X |
|
|
|
目的
指定一个字符串,用户可以把它提供给 DTW_SQL 语言环境,代表返回在一个 SQL 结果集 中的空(NULL)值。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
NULL_RPT_FIELD="null_char"
| 值 | 说明 |
|---|---|
| null_char | 指定一个字符串来代表 SQL 结果集中返回的空值。 缺省是一个空字符串。 |
例
例 1:指定一个代表 SQL 语言环境中空(NULL)值的字符串
%DEFINE NULL_RPT_FIELD = "++++"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X |
| X | X | X | X |
目的
通过向数据库语言环境传送一个口令,提供对保护数据的访问。这个变量与 LOGIN 一起 使用 DB2 的安全性算法。
OS/400 用户:如果 DATABASE 变量没有定义或者该变量 设置为 "*LOCAL",则 OS/400 将忽略 LOGIN 和 PASSWORD。数据库的访问是通过 Net.Data 在其下 运行的用户概要来获得了。
安全性提示:在可以将 这个值编码在 Net.Data 宏中的同时,也建议让应用程序用户在 HTML 格式下输入口令。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
PASSWORD="password"
| 值 | 说明 |
|---|---|
| password | 指定一个有效的口令,提供自动访问数据库语言环境。 |
例
例 1:用口令 NETDATA 限制应用程序用户访问
%DEFINE PASSWORD="NETDATA"
例 2:HTML 格式输入行
PASSWORD: <INPUT TYPE="password" NAME="PASSWORD" SIZE=8>
这个例子中显示可以作为 HTML 一部分的一行,应用程序用户可以用它来输入自己的口令。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
隐藏或显示用在 Web 浏览器上的查询 SQL。在测试期间显示 SQL,在 调试 Net.Data 宏时特别有帮助。仅当 Net.Data 配置文件中 DTW_SHOWSQL 设置为 YES 时, 才可使用 SHOWSQL。有关 DTW_SHOWSQL 配置变量的更多信息,请参阅Net.Data 管理与程序 设计指南针对您的操作系统中有关配置一章。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
SHOWSQL="YES"|"NO"
| 值 | 说明 |
|---|---|
| YES | 显示发送给数据库的查询的 SQL。 |
| NO | 隐藏发送给数据库的查询的 SQL。NO 是缺省。 |
例
例 1:显示所有 SQL 查询
在配置文件中:
DTW_SHOWSQL YES
在宏中:
%DEFINE SHOWSQL="YES"
例 2:指定是否使用 HTML 格式输入来显示 SQL。
在配置文件中:
DTW_SHOWSQL YES
在宏中:
SHOWSQL: <INPUT TYPE="radio" NAME="SHOWSQL" VALUE="YES"> Yes
<INPUT TYPE="radio" NAME="SHOWSQL" VALUE="" CHECKED> No
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
访问或者显示从数据库返回的 SQL 状态值。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
例
例 1:在 REPORT 块中显示 SQL 状态
%FUNCTION (DTW_SQL) val1() {
select * from customer
%REPORT {
...
%ROW {
...
%}
SQLSTATE=$(SQL_STATE)
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定 SQL 命令的事务处理范围,确定 Net.Data 是否在每条 SQL 命令或在所有 SQL 命令在 HTML 块中成功完成后发出 COMMIT。如果指定在提交之前必须先成功完成所有 SQL 命令 ,则不成功的 SQL 命令会使模块中先前对同一个数据库执行的所有 SQL 命 令都被撤消。
为使 TRANSACTION_SCOPE 变量生效,将它包含在 Net.Data 配置文件的 ENVIRONMENT 语句 中。然后,您就可以用 DEFINE 语句或 @DTW_ASSIGN() 函数来指定此变量的值。
一致性考虑:在不是 OS/400 和 OS/390 的操作系统中,如果所有以下条件都成 立,则当提交对由同一 HTML 模块访问的其它数据库的更新时,对这个数据库进行的更新 (接收到 不成功的响应)将被撤消:
如果您在 OS/400 上从 Net.Data 访问多个数据库,或使用 IBM 的 DataJoiner 访问 多个数据库,那么在从 Net.Data 更新时,这多个数据库将可以协调一致地得以更新。
在 OS/400 和 OS/390 中,TRANSACTION_SCOPE = "MULTIPLE" 将使得从一个 HTML 模块 发出的所有 IBM 数据库更新操作被一起提交或回滚。
在不是 OS/400 的操作系统中,REXX、Perl 和 Java 语言环境是在它们自己的操作系统 进程中运行的。因此,您从这些语言环境发出的数据库更新操作,与从 Net.Data 宏 中发出的数据库更新操作是相互独立的,可以分别被提交或回滚,而与 Net.Data TRANSACTION_SCOPE 值的设置无关。
值
TRANSACTION_SCOPE="SINGLE"|"MULTIPLE"
| 值 | 说明 |
|---|---|
| SINGLE | 在 HTML 块中的每条 SQL 命令成功完成后,Net.Data 发出一个 COMMIT。 |
| MULTIPLE | 指定只有在 HTML 块中的所有 SQL 命令都成功完成后, Net.Data 才发出 COMMIT。MULTIPLE 是缺省。 |
例
例 1:指定在每个事务处理后发出一条 COMMIT
%DEFINE TRANSACTION_SCOPE="SINGLE"