应用程序开发:调用级接口(CLI)
|
|
|SQLDescribeParam 函数的诊断表更新(CLI)
|SQLDescribeParam() 函数返回与预编译 SQL 语句关联的参数标记的描述。
|已使用 SQLSTATE HYC00 更新诊断表。
|
|诊断
|
|
|
|表 24. SQLDescribeParam SQLSTATEs
|
|
|SQLSTATE |
|描述 |
|解释 |
|
|
|
|
|HYC00 |
|驱动程序不可用 |
|在服务器上不能访问模式函数存储过程。在服务器上安装模式函数存储过程并确保可以访问它们。 |
|
|
|
|
|
|调用层接口的异步执行
|DB2 调用层接口(DB2 CLI)可以异步运行一部分函数。DB2 CLI 驱动程序在调用函数之后但在该函数完成执行之前将控制权返回给应用程序。每次调用函数时,它都会返回 SQL_STILL_EXECUTING,直到该函数完成运行为止,此时它返回另一个值(例如,SQL_SUCCESS)。
|异步执行只在单线程操作系统上才有益。在多线程操作系统上运行的应用程序应在单独的线程中执行函数。可以对通常将请求发送至服务器,然后等待响应的那些函数进行异步执行。异步执行的函数无须等待就将控制权返回给应用程序。然后,该应用程序可以执行其它任务,或将控制权返回给操作系统,并使用中断来反复轮询该函数,直到返回除 SQL_STILL_EXECUTING 之外的返回码为止。
|从 DB2 通用数据库(UDB)版本 8.2 修订包 1(相当于版本 8.1 修订包 8)开始就包括对 CLI 的异步执行的支持。有关此功能的文档,参阅 DB2 UDB 版本 7 信息中心,网址为 http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp。版本 7 文档中的所有信息适用于版本 8.2 修订包 1(相当于版本 8.1 修订包 8)和更新版本。DB2 版本 8 信息中心不包含此功能的任何文档。
|
|
|SQL_ATTR_PING_DB 连接属性
|
|SQL_ATTR_PING_DB(DB2 CLI V8.2)
|SQL_ATTR_PING_DB 是一个 32 位的整数,它与 SQLGetConnectAttr() 函数一起使用以获取 DB2 UDB 客户机和 DB2 UDB 服务器之间的现有连接的网络响应时间。响应时间是以微秒为单位报告的。
|如果先前已建立连接并且该连接已被数据库断开,则报告值 0。如果连接已被应用程序关闭,则报告 SQLSTATE 为 08003。此连接属性可由 SQLGetConnectAttr() 返回,但不能由 SQLSetConnectAttr() 设置。任何尝试设置此属性的行为都将导致 SQLSTATE 为 HYC00(驱动程序不可用)。
|
|
|SQLBindParameter 函数(CLI)
|在 SQLBindParameter 函数的文档中,“输入参数”一节中的描述不正确。正确的描述如下所示:
|
|- 输入参数
|- 0 ColumnSize 意味着 DB2 CLI 将使用 SQL 类型的最大长度,该长度是作为列或存储过程参数的大小提供的。DB2 CLI 将使用此大小执行任何必需的转换。
|
|
|
|
|SQLMoreResults 函数(CLI)
|在 SQLMoreResults 函数的文档中,不正确地引用了 SQL_ATTR_ROW_ARRAY_SIZE 语句属性。正确的语句属性是 SQL_ATTR_PARAMSET_SIZE。“用法”一节应如下所示:
|此函数用来按执行下列内容的顺序返回多个结果集:
|
|- 使用通过 SQL_ATTR_PARAMSET_SIZE 语句属性和 SQLBindParameter() 指定的输入参数值数组执行参数化查询
其它环境属性
除了充当 CLI 连接属性之外,下列属性作为 CLI 环境属性时也是受支持的:
- SQL_ATTR_INFO_ACCTSTR
- SQL_ATTR_INFO_APPLNAME
- SQL_ATTR_INFO_USERID
- SQL_ATTR_INFO_WRKSTNNAME
有关这些属性的信息,请参阅 DB2 信息中心或 CLI
Guide and Reference Volume 2 中的 CLI 连接属性文档。
动态可滚动游标需求
要对动态可滚动游标的结果集中的行执行更新和删除,UPDATE 或 DELETE
语句必须包括基本表中至少一个唯一键的所有列。它可以是主键或任何其它唯一键。
|
|
|RetCatalogAsCurrServer CLI/ODBC 配置关键字
|
|- 关键字描述:
|- 目录函数对目录列返回 CURRENT SERVER 值而不是 null 值。
|
|- db2cli.ini 关键字语法:
|- RetCatalogAsCurrServer= 0 | 1
|
|- 缺省设置:
|- 如果目标 DBMS 对目录列返回 null,则将不会替换 CURRENT SERVER 值。
|
|- 使用说明:
|- 如果目标 DBMS 的目录函数对目录列返回 null 值,则将 RetCatalogAsCurrServer 设置为 1 会导致 DBMS 返回 CURRENT SERVER 值。
|
|- 0 表示目录函数对目录列返回 null 值(缺省值)。
|- 1 表示目录函数对目录列返回 CURRENT SERVER 值,而不是 null 值。
|例如,假定目录函数 SQLTables() 返回一个结果集,其中 TABLE_CAT 列中的值为 null 值。 将 RetCatalogAsCurrServer 设置为 1 会导致 DBMS 在 TABLE_CAT 列中返回 CURRENT SERVER 值。
|
|
|注:
|此关键字受 DB2 UDB Linux 版、UNIX(R) 版和 Windows(R) 版版本 8.2 修订包 3(相当于版本 8.1 修订包 10)和更新版本支持。
|
|
ReceiveTimeout CLI/ODBC 配置关键字
- 关键字描述:
- 指定就已建立的连接等待服务器回复的时间(以秒为单位),超过该时间将终止尝试并生成通信超时错误。
- db2cli.ini 关键字语法:
- ReceiveTimeout = 0 | 1 | 2 |
... | 32767
- 缺省设置:
- 客户机就已建立的连接无限期等待服务器的回复。
- 等价语句属性:
- SQL_ATTR_RECEIVE_TIMEOUT
- 使用说明:
- 缺省值为 0,指示客户机将无限期等待回复。接收超时在建立连接期间不起作用;仅 TCP/IP 协议支持该参数,任何其它协议都将忽略该参数。
SQL_ATTR_RECEIVE_TIMEOUT 语句属性
- SQL_ATTR_RECEIVE_TIMEOUT(DB2 CLI V8)
- 32 位整数值,指示客户机就已建立的连接等待服务器回复的秒数,超过该时间将终止尝试并生成通信超时错误。缺省值为 0,指示客户机将无限期等待回复。接收超时在建立连接期间不起作用;仅
TCP/IP 协议支持该参数,任何其它协议都将忽略该参数。受支持的值从 0 到 32767。
Reopt CLI/ODBC 配置关键字
- 关键字描述:
- 支持对带有专用寄存器或参数标记的 SQL 语句进行查询优化或重新优化。
- db2cli.ini 关键字语法:
- Reopt = 2 | 3 | 4
- 缺省设置:
- 不会在查询执行时进行查询优化。编译器选择的缺省估计值将用于专用寄存器或参数标记。
- 等价语句属性:
- SQL_ATTR_REOPT
- 使用说明:
- 通过使用查询执行时为专用寄存器或参数标记提供的值来进行优化,而不是使用编译器选择的缺省估计值进行优化。关键字的有效值包括:
- 2 = SQL_REOPT_NONE。这是缺省值。不会在查询执行时进行查询优化。编译器选择的缺省估计值将用于专用寄存器或参数标记。缺省“NULLID”程序包集合用于执行动态 SQL 语句。
- 3 = SQL_REOPT_ONCE。第一次执行查询时会在查询执行时进行一次查询优化。将使用与 REOPT ONCE 绑定选项绑定在一起的“NULLIDR1”程序包集合。
- 4 = SQL_REOPT_ALWAYS。每次执行查询时,会在查询执行时进行查询优化或重新优化。将使用与 REOPT ALWAYS
绑定选项绑定在一起的“NULLIDRA”程序包集合。
“NULLIDR1”和“NULLIDRA”是保留的程序包集合名称,使用时分别暗示 REOPT ONCE 和
REOPT ALWAYS。必须使用下列命令显式创建这些程序包集合:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
如果同时指定了 Reopt 和 CurrentPackageSet
关键字,则 CurrentPackageSet 优先。
SQL_ATTR_REOPT 语句属性
- SQL_ATTR_REOPT(DB2 CLI V8)
- 32 位整数值,用于对包含专用寄存器或参数标记的 SQL 语句启用查询优化。通过使用查询执行时为专用寄存器或参数标记提供的值来进行优化,而不是使用编译器选择的缺省估计值进行优化。该属性的有效值包括:
- 2 = SQL_REOPT_NONE。这是缺省值。不会在查询执行时进行查询优化。编译器选择的缺省估计值将用于专用寄存器或参数标记。缺省“NULLID”程序包集合用于执行动态 SQL 语句。
- 3 = SQL_REOPT_ONCE。第一次执行查询时会在查询执行时进行一次查询优化。将使用与 REOPT ONCE 绑定选项绑定在一起的“NULLIDR1”程序包集合。
- 4 = SQL_REOPT_ALWAYS。每次执行查询时,会在查询执行时进行查询优化或重新优化。将使用与 REOPT ALWAYS
绑定选项绑定在一起的“NULLIDRA”程序包集合。
“NULLIDR1”和“NULLIDRA”是保留的程序包集合名称,使用时分别暗示 REOPT ONCE 和
REOPT ALWAYS。必须使用下列命令显式创建这些程序包集合:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
SQL_ATTR_REOPT 和 SQL_ATTR_CURRENT_PACKAGE_SET
是互斥的,因此只能设置其中一项。
CurrentPackageSet CLI/ODBC 配置关键字
- 关键字描述:
- 在每次连接后发出 SET CURRENT PACKAGESET 语句。
- db2cli.ini 关键字语法:
- CurrentPackageSet = schema name
- 缺省设置:
- 不追加该子句。
- 等效连接属性:
- SQL_ATTR_CURRENT_PACKAGE_SET
- 使用说明:
-
在每次连接至数据库之后,此选项发出 SET CURRENT PACKAGESET SQL 语句,并带有
CurrentPackageSet 值。在缺省情况下,将不追加此子句。
SET CURRENT PACKAGESET SQL
语句设置模式名(集合标识),该名称用来选择要用于后续 SQL 语句的程序包。
CLI/ODBC
应用程序发出动态 SQL 语句。可使用此选项来控制用于运行下列语句的特权:
- 选择从 CLI/ODBC 应用程序运行 SQL 语句时要使用的模式。
- 确保该模式中的对象具有期望的特权,然后重新进行相应的绑定。
- 将 CurrentPackageSet 选项设置为此模式。
CLI/ODBC 应用程序中的 SQL 语句将在指定模式中运行并使用在该处定义的特权。
下列程序包集合名称是保留的:“NULLID”、“NULLIDR1”和“NULLIDRA”。
如果同时指定了 Reopt 和 CurrentPackageSet
关键字,则 CurrentPackageSet 优先。
SQL_ATTR_CURRENT_PACKAGE_SET 连接属性
- SQL_ATTR_CURRENT_PACKAGE_SET(DB2 CLI V5)
- 以 null 结束的字符串,指示用来选择要用于后续 SQL 语句的程序包的模式名(连接标识)。设置此属性将导致发出
SET CURRENT PACKAGESET SQL 语句。如果此属性是在连接之前设置的,则将在连接时发出 SET CURRENT PACKAGESET
SQL 语句。
CLI/ODBC
应用程序发出动态 SQL 语句。可使用此连接属性来控制用于运行下列语句的特权:
- 选择从 CLI/ODBC 应用程序运行 SQL 语句时要使用的模式。
- 确保该模式中的对象具有期望的特权,然后重新进行相应的绑定。这通常意味着使用
COLLECTION <collid> 选项绑定 CLI 程序包(sqllib/bnd/db2cli.lst)。有关进一步的详细信息,请参阅 BIND 命令。
- 将 CURRENTPACKAGESET 选项设置为此模式。
CLI/ODBC 应用程序中的 SQL 语句将在指定模式中运行并使用在该处定义的特权。
指定模式名的另一种方法是设置 CLI/ODBC
配置关键字 CURRENTPACKAGESET。
下列程序包集合名称是保留的:“NULLID”、“NULLIDR1”和“NULLIDRA”。
SQL_ATTR_REOPT 和 SQL_ATTR_CURRENT_PACKAGE_SET
是互斥的,因此只能设置其中一项。
MapBigintCDefault CLI/ODBC 配置关键字
- 关键字描述:
- 指定 BIGINT 列和参数标记的缺省 C 类型。
- db2cli.ini 关键字语法:
- MapBigintCDefault = 0 | 1 | 2
- 缺省设置:
- BIGINT 数据的缺省 C 类型表示法为 SQL_C_BIGINT。
- 使用说明:
-
MapBigintCDefault 控制在对 BIGINT 列和参数标记指定 SQL_C_DEFAULT 时使用的
C 类型。此关键字应主要用于 Microsoft(R) 应用程序,例如,Microsoft Access,它不能处理 8 字节整数。按如下所示设置 MapBigintCDefault:
- 0 - 用于缺省 SQL_C_BIGINT C 类型表示法
- 1 - 用于 SQL_C_CHAR C 类型表示法
- 2 - 用于 SQL_C_WCHAR C 类型表示法
此关键字会影响 CLI 函数的行为,其中 SQL_C_DEFAULT 可能被指定为 C 类型,例如,SQLBindParameter()、SQLBindCol() 和 SQLGetData()。
DescribeOutputLevel CLI/ODBC 配置关键字
- 关键字描述:
- 设置 CLI 驱动程序在准备或描述请求期间请求的输出列描述信息的级别。
- db2cli.ini 关键字语法:
- DescribeOutputLevel = 0 | 1 | 2 | 3
- 缺省设置:
- 请求表 25 的级别 2 中列出的描述信息。
- 使用说明:
-
此关键字控制 CLI 驱动程序在准备或描述请求期间请求的信息量。缺省情况下,当服务器接收到描述请求时,它将返回包含在结果集列的表 25 的级别 2 中包含的信息。但是,应用程序可能不需要此信息的全部或可能需要其它信息。
将 DescribeOutputLevel 关键字设置为能够满足客户机应用程序需要的级别可改进性能,因为在客户机与服务器之间传送的描述数据被限制为应用程序需要的最小量。如果
DescribeOutputLevel 设置被设置得过低,可能会对应用程序的功能有影响(这取决于应用程序的需求)。用来检索描述信息的 CLI 函数在此情况下不会失败,但返回的信息可能不完整。
DescribeOutputLevel 的受支持设置包括:
- 0 - 不会对客户机应用程序返回任何描述信息
- 1 - 在级别 1(请参阅表 25)中归类的描述信息将返回至客户机应用程序
- 2 -(缺省值)在级别 2(请参阅表 25)中归类的描述信息将返回至客户机应用程序
- 3 - 在级别 3(请参阅表 25)中归类的描述信息将返回至客户机应用程序
下表列出的字段将组成描述信息,服务器在接收到准备或描述请求时会返回此描述信息。这些字段被分组成若干级别,而
DescribeOutputLevel CLI/ODBC 配置关键字控制 CLI 驱动程序请求哪些级别的描述信息。
注:
并非所有级别的描述信息都受到 DB2(R) 服务器的支持。所有级别的描述信息在下列 DB2 服务器上受支持:DB2 通用数据库(TM)(UDB)Linux(TM) 版、UNIX(R) 版和 Windows(R) 版版本 8 和更新版本、DB2 UDB z/OS(R) 版版本 8 和更新版本以及 DB2 UDB iSeries(TM) 版 V5R3 和更新版本。所有其它 DB2 服务器仅支持将 DescribeOutputLevel 设置为 2 或 0。
表 25. 描述信息的级别
级别 1 |
级别 2 |
级别 3 |
SQL_DESC_COUNT
SQL_COLUMN_COUNT
SQL_DESC_TYPE
SQL_DESC_CONCISE_TYPE
SQL_COLUMN_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_LENGTH
SQL_DESC_PRECISION
SQL_COLUMN_PRECISION
SQL_DESC_SCALE
SQL_COLUMN_SCALE
SQL_DESC_DISPLAY_SIZE
SQL_DESC_NULLABLE
SQL_COLUMN_NULLABLE
SQL_DESC_UNSIGNED
SQL_DESC_SEARCHABLE
SQL_DESC_LITERAL_SUFFIX
SQL_DESC_LITERAL_PREFIX
SQL_DESC_CASE_SENSITIVE
SQL_DESC_FIXED_PREC_SCALE |
级别 1 的所有字段以及:
SQL_DESC_NAME
SQL_DESC_LABEL
SQL_COLUMN_NAME
SQL_DESC_UNNAMED
SQL_DESC_TYPE_NAME
SQL_DESC_DISTINCT_TYPE
SQL_DESC_REFERENCE_TYPE
SQL_DESC_STRUCTURED_TYPE
SQL_DESC_USER_TYPE
SQL_DESC_LOCAL_TYPE_NAME
SQL_DESC_USER_DEFINED_
TYPE_CODE |
级别 1 和级别 2 的所有字段
以及:
SQL_DESC_BASE_COLUMN_NAME
SQL_DESC_UPDATABLE
SQL_DESC_AUTO_UNIQUE_VALUE
SQL_DESC_SCHEMA_NAME
SQL_DESC_CATALOG_NAME
SQL_DESC_TABLE_NAME
SQL_DESC_BASE_TABLE_NAME |
[ 页的顶部 |上一页 | 下一页 | 目录 ]