IBM Books

Net.Data 参考


Net.Data 语言环境变量

和函数一起使用这些变量,帮助定制使用语言环境处理 FUNCTION 块的方式。 在引用这些变量之前 先要定义之。

DATABASE


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"

表 7. DATABASE 值
说明
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。

DB_CASE


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"

表 8. DB_CASE Values
说明
UPPER 把所有 SQL 命令字符转换为大写。
LOWER 把所有 SQL 命令字符转换为小写。

例 1:指定将所有 SQL 命令用大写

%DEFINE DB_CASE="UPPER"

DB2PLAN


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"

表 9. DB2PLAN 值
说明
plan_name DB2 计划的名称。此名称可以是 8 个字符或更少些。

例 1:在 DEFINE 语句中指定计划

%DEFINE DB2PLAN="DTWGAV21"

DB2SSID


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"

表 10. DB2SSID 值
说明
subsystem_id DB2 子系统的名称。此名称可以是 8 个字符或更少些。

例 1:在 DEFINE 语句中指定一个子系统 ID

%DEFINE DB2SSID="DBNC"

DTW_APPLET_ALTTEXT


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"

表 11. DTW_APPLET_ALTTEXT 值
说明
HTML_text_and_tags 针对不能识别 APPLET 标记的浏览器的 HTML 标记和文本。

例 1:指示一个 Web 浏览器限制的替换文本

%DEFINE DTW_APPLET_ALTTEXT = "<P>Sorry, your browser is not java-enabled."

DTW_EDIT_CODES


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"

表 12. DTW_EDIT_CODES 值
说明
edit_code 指定一个字符型字符串,它相应于 SQL 语言环境构建的表格的 结果列。

例 1:

@DTW_ASSIGN(DTW_EDIT_CODES "JJLJJ*******Y")

DTW_MBMODE


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"

表 13. DTW_MBMODE 值
说明
YES 指定 MBCS 支持字符串和字处理函数。
NO 指定字符串和字处理函数没有 MBCS 支持。NO 是缺省。

<DTW_MBMODE="YES"

DTW_SAVE_TABLE_IN


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"

表 14. DTW_SAVE_TABLE_IN 值
说明
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 函数调用中返回的。

DTW_SET_TOTAL_ROWS


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"

表 15. DTW_SET_TOTAL_ROWS 值
说明
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.
%}
%}

LOCATION


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"

表 16. LOCATION 值
说明
remote_dbase_name 一个有效远程数据库服务器的名称,它在 CDB 的 SYSIBM.SYSLOCATIONS 表格中定义。此名称可以是 8 个字符或更少些。

例 1:在 DEFINE 语句中定义远程数据库的位置

%DEFINE LOCATION="QMFDJ00"

LOGIN


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"

表 17. LOGIN 值
说明
database_user_id 一个有效的数据库用户标识符。缺省时,使用用于启动 Web 服务器的用户 ID。

例 1:限制访问用户标识符,DB2USER

%DEFINE LOGIN="DB2USER"

例 2:使用 HTML 格式输入行

USERID&#58;  <INPUT TYPE="text" NAME="LOGIN" SIZE=6>

这个例子中显示可以作为 HTML 一部分的一行,应用程序用户可以用它来输入其用户 标识符。

NULL_RPT_FIELD


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"

表 18. NULL_RPT_FIELD 值
说明
null_char 指定一个字符串,代表返回在一个 SQL 结果集合中的空(NULL)值。 缺省是一个空字符串。

例 1:指定一个代表 SQL 语言环境中空(NULL)值的字符串

%DEFINE NULL_RPT_FIELD = "++++"

PASSWORD


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"

表 19. PASSWORD 值
说明
password 指定一个有效的口令,提供自动访问数据库语言环境。

例 1:用口令 NETDATA 限制应用程序用户访问

%DEFINE PASSWORD="NETDATA"

例 2:HTML 格式输入行

PASSWORD&#58; <INPUT TYPE="password" NAME="PASSWORD" SIZE=8>

这个例子中显示可以作为 HTML 一部分的一行,应用程序用户可以用它来输入自己的口令。

SHOWSQL


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"

表 20. SHOW_SQL 值
说明
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

SQL_STATE


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)
%}
 

TRANSACTION_SCOPE


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"

表 21. TRANSACTION_SCOPE 值
说明
SINGLE 在 HTML 块中的每条 SQL 命令成功完成后,Net.Data 发出一个 COMMIT。
MULTIPLE 指定只有在 HTML 块中的所有 SQL 命令都成功完成后, Net.Data 才发出 COMMIT。MULTIPLE 是缺省。

例 1:指定在每个事务处理后发出一条 COMMIT

%DEFINE TRANSACTION_SCOPE="SINGLE"


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]