和函数一起使用这些变量,帮助定制使用语言环境处理 FUNCTION 块的方式。 在引用这些变量之前 先要定义之。
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
| X |
|
|
|
|
目的
为和一个本地 DB2 子系统的连接分配一个计划。此变量指定在 Net.Data 将访问的本地 DB2 子系 统上针对 Net.Data SQL 语言环境的计划名。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
要求:此变量必须在 Net.Data 初始化文件中指定在 DTW_SQL ENVIRONMENT 语句上,宏文件中可选指定。如果在 Net.Data for OS/390 的初始化文件中没有指定这 个变量,或者在一个宏内部而不是在初始化文件中未定义,则当这个宏企图 执行一个 SQL 函数时将发生错误。
值
DB2PLAN="plan_name"
值 | 说明 |
---|---|
plan_name | DB2 计划的名称。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中指定计划
%DEFINE DB2PLAN="DTWGAV21"
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
| X |
|
|
|
|
目的
建立一个和本地 DB2 子系统的连接。这些变量指定 了 Net.Data 将要访问的本地 DB2 子系统的子系统标识符。 每个宏只允许有一个本地 数据库连接。
要求:此变量必须指定在 Net.Data 初始化文件中,宏文件中可选指定。 如果没有 在 Net.Data for OS/390 初始化文件中指定这个变量,也没有在宏当中定义,则当这个宏企图 执行一个 SQL 函数时将发生一个错误。
值
DB2PLAN="subsytem_id"
值 | 说明 |
---|---|
subsystem_id | DB2 子系统的名称。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中指定一个子系统 ID
%DEFINE DB2SSID="DBNC"
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
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 | 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’,‘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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X |
| X | X | X |
目的
提供多字节字符集 (MBCS),支持由“缺省”语言环境使用的字符串和字处理函数。可以在 Net.Data 初始化文件中设置这个变量,但是您可以在宏文件中使用它来设置或覆盖当前设置。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
OS/400 用户: Net.Data for OS/400 自动允许 MBCS 支持功能 ,它不需要这个变量。Net.Data for OS/400 忽略被移植到 OS/400 操作系统上的宏文件中的这个变 量。
值
DTW_MBMODE="YES"|"NO"
值 | 说明 |
---|---|
YES | 指定 MBCS 支持字符串和字处理函数。 |
NO | 指定字符串和字处理函数没有 MBCS 支持。NO 是缺省。 |
例
<DTW_MBMODE="YES"
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
| X | X | X | X |
目的
指定一个数据库语言环境,针对一个查询的结果集合中的总行数应当指定为 TOTAL_ROWS。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
要自动传送此变量,则把它作为一个 IN 变量包含在初始化文件的数据库语言环境 ENVIRONMENT 语句中。参阅Net.Data 管理与程序设计指南的配置一章,进一步学习数据库语言环境语句。
值
DTW_SET_TOTAL_ROWS="YES"|"NO"
值 | 说明 |
---|---|
YES | 把总行数的值指定为 TOTAL_ROWS 变量。重 要:如果您想要引用变量 TOTAL_ROWS 来确定从查询返回的行数,则必须设置这个值。 |
NO | Net.Data 不设置 TOTAL_ROWS 变量,TOTAL_ROWS 在宏文件中 不能引用。NO 是缺省。 |
性能提示:如果将 DTW_SET_TOTAL_ROWS 设置 为 YES,这将影响其性能,因为为了确定总行数,数据库语言环境需要检索所有行。
例
例 1:定义 DTW_SET_TOTAL_ROWS 使用 TOTAL_ROWS
%DEFINE DTW_SET_TOTAL_ROWS="YES" ... %FUNCTION (DTW_SQL) myfunc() { select * from MyTable %report { ... %row ... %} <P>$(NUM_ROWS) returned. Your query is limited to $(TOTAL_ROWS) rows. %} %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
| X |
|
|
|
|
目的
建立一个和远程数据库服务器的连接。此变量 指定了本地 DB2 子系统中用于标识远程服务器的名称。 LOCATION 的值必须 在 Communications Database (CDB) 中的 SYSIBM.SYSLOCATIONS 表格中定义。 如果未 在宏中定义过这个变量,那么由宏发出的任何 SQL 请求都将在本地 DB2 子系统中执行。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
LOCATION="remote_dbase_name"
值 | 说明 |
---|---|
remote_dbase_name | 一个有效远程数据库服务器的名称,它在 CDB 的 SYSIBM.SYSLOCATIONS 表格中定义。此名称可以是 8 个字符或更少些。 |
例
例 1:在 DEFINE 语句中定义远程数据库的位置
%DEFINE LOCATION="QMFDJ00"
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
| X | X | X | X |
目的
通过向数据库语言环境传送一个用户标识符,提供对保护数据的访问。这个变量与 PASSWORD 一起 使用 DB2 的安全性算法。
安全性提示:在可以将 这个值编码在 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 | 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 结果集合中的空(NULL)值。 缺省是一个空字符串。 |
例
例 1:指定一个代表 SQL 语言环境中空(NULL)值的字符串
%DEFINE NULL_RPT_FIELD = "++++"
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
| X | X | X | X |
目的
通过向数据库语言环境传送一个口令,提供对保护数据的访问。这个变量与 LOGIN 一起 使用 DB2 的安全性算法。
安全性提示:在可以将 这个值编码在 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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
隐藏或显示用在 Web 浏览器上的查询 SQL。在测试期间显示 SQL,在 调试 Net.Data 宏时特别有帮助。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
SHOWSQL="YES"|"NO"
值 | 说明 |
---|---|
YES | 显示发送给数据库的查询的 SQL。 |
NO | 隐藏发送给数据库的查询的 SQL。 NO 是缺省。 |
例
例 1:显示所有 SQL 查询
%DEFINE SHOWSQL="YES"
例 2:使用 HTML 格式输入指定是否显示 SQL
SHOWSQL: <INPUT TYPE="radio" NAME="SHOWSQL" VALUE="YES"> Yes <INPUT TYPE="radio" NAME="SHOWSQL" VALUE="" CHECKED> No
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
指定 SQL 命令的事务处理范围,确定 Net.Data 是否在每条 SQL 命令或在所有 SQL 命令在 HTML 块中成功完成后发出 COMMIT。如果指定在提交之前必须先成功完成所有 SQL 命令 ,则不成功的 SQL 命令会使模块中先前对同一个数据库执行的所有 SQL 命 令都被撤消。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
一致性考虑:在不是 OS/400 和 OS/390 的操作系统中,如果所有以下条件都成 立,则当提交对由同一 HTML 模块访问的其它数据库的更新时,对这个数据库进行的更新 (接收到 不成功的响应)将被撤消:
如果使用 IBM 的 DataJoiner 从 Net.Data 访问多个数据库,则当从 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"