IBM Books

参考


Net.Data 语言环境变量

和函数一起使用这些变量,帮助定制使用语言环境处理 FUNCTION 块的方式。每个变量都有一个缺省值。您可以通过为变量指定一个新值来覆盖缺省值。

DATABASE


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"

表 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 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"

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

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

%DEFINE DB_CASE="UPPER"

DB2PLAN


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"

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

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

%DEFINE DB2PLAN="DTWGAV22"

DB2SSID


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT




X



目的

建立一个和本地 DB2 子系统的连接。这些变量指定 了 Net.Data 将要访问的本地 DB2 子系统的子系统标识符。每个宏只允许有一个本地 数据库连接。

要求:为使宏中此变量的值能够生效,它必须列在 SQL 语言环境 的 ENVIRONMENT 语句中。

 DB2PLAN="subsytem_id"

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

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

%DEFINE DB2SSID="DBNC"

DTW_APPLET_ALTTEXT


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"

表 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 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"

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

例 1:

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

DTW_PAD_PGM_PARMS


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"

表 13. DTW_PAD_PGM_PARMS 值
说明
YES 在将参数传递到程序或存储过程之前,所有的 IN 和 INOUT 字符参数值 将被调整并根据定义的参数精度填充空格。在对程序或存储过程的调用之后,将除去尾随空格。
NO 在将参数传递到程序或存储过程时,不对字符参数值(以 NULL 结束的 值)添加补空。在调用程序或存储过程之后不除去尾随空格。

例 1:用空格填充参数

DTW_PAD_PGM_PARMS="YES"

DTW_SAVE_TABLE_IN


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"

表 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 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"

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

LOCATION


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"

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

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

%DEFINE LOCATION="QMFDJ00"

LOGIN


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"

表 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 Linux 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 结果集中返回的空值。 缺省是一个空字符串。

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

%DEFINE NULL_RPT_FIELD = "++++"

PASSWORD


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"

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

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

%DEFINE PASSWORD="NETDATA"

例 2:HTML 格式输入行

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

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

SHOWSQL


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"

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

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 状态值。

此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。

例 1:在 REPORT 块中显示 SQL 状态

%FUNCTION (DTW_SQL) val1() {
  select * from customer
       %REPORT {
 ...
  %ROW {
 ...
%}
 SQLSTATE=$(SQL_STATE)
%}
 

TRANSACTION_SCOPE


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"

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

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

%DEFINE TRANSACTION_SCOPE="SINGLE"


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