调试 SPL 例程

可以使用 Routine Debugger 客户端应用程序标识并分析 SPL 中的逻辑错误。

您可以在 SPL 例程中包含 TRACE 语句来生成跟踪输出。有关如何生成及检查 TRACE 语句的输出,请参阅 TRACE

调试 SPL 例程中的当前限制

以下软件产品可支持当前用于调试 GBase 8s SPL 例程的客户端环境:
  • Optim™ Development Studio (ODS)
  • GBase Database Add-Ins for Visual Studio (IDAIVS)

有关哪些 GBase 8s 数据类型是只读的以及哪些是可更新的信息,请参阅数据类型支持文档。

以下限制适用于 Optim Development Studio (ODS) 和 GBase Database Add-Ins for Visual Studio (IDAIVS) 调试环境:
未日志记录的数据库

GBase 8s 非事务型数据库不支持 SPL 调试。无法对 ODS 或 IDAIVS 调试环境使用省略 WITH LOG 关键字的 CREATE DATABASE 语句的 GBase 8s 数据库。

辅助服务器实例

集群环境中的辅助服务器不支持 Insert 、Delete 或 Update 触发器的 'Step into' 触发过程操作。

用引号(")分隔的数据字符串

ODS 或 IDAIVS 调试客户端当前对引号标记分隔符的解释可能与某些 SPL 例程的预期行为冲突。
  • 目前,在 ODS 调试会话中,缺省情况下,GBase Data Server 驱动程序 JDBC 和 SQLJ 连接字符串中的 DELIMIDENT 环境变量设置为'y'。JDBC 连接的 DELIMIDENT 缺省值为'n'
  • 在当前 IDAIVS 调试会话中,缺省情况下, GBase 8s .NET provider 连接字符串中的 DELIMIDENT 环境变量设置为 'y'

DELIMIDENT 环境变量的设置会影响数据库服务器如何解释带引号的字符串:

  • 'y' 指定由双引号(")标记包括的字符串是分隔的 SQL 标识符。客户端应用程序必须使用单引号(')标记分隔字符串,并且只能在分隔的 SQL 标识符周围使用双引号("),可以支持比在未限定标识符中有效的更大的字符集。在支持区分大小写的语言环境中,分隔字符串中或分隔标识符内的字母都区分大小写。这是 .NET 的缺省值。
  • 'n' 指定客户端应用程序可以使用双引号(")或单引号(')标记分隔字符串,但是不能分隔 SQL 标识符。如果数据库服务器遇到在需要 SQL 标识符的上下文中由双引号或单引号分隔的字符串,则它会发出错误。限定 SQL 标识符的所有者名称可以用单引号(')标记分隔。您必须使用一对相同的引号符号来分隔字符串。
  • 如果客户端系统上没有指定 DELIMIDENT 值,则使用缺省设置。如上所述,对于 OCD 该缺省值为 'n'(来自GBase Data Server 驱动程序 JDBC 和 SQLJ 连接字符串)。对于 IDAIVS ,该缺省值为 'y'(来自 GBase 8s .NET provider 连接字符串)。

只影响 ODS 调试会话的限制

缺省情况下,JDBC 和 SQLJ 的 GBase Data Server 驱动程序的 'AUTOCOMMIT' 事务方式设置为 'TRUE' 。它会在所有的日志记录的数据库的 ODS 调试会话中启用,包括创建的 WITH LOG MODE ANSI 的数据库,以及不兼容 ANSI 的数据库。

目前, GBase 8s 服务器在 Optim Development Studio 调试会话中完成每个 SQL 语句后执行隐式提交操作。如果在 GBase 8s SPL 例程中启动了显式事务,则数据库服务器将忽略 SQL ERROR -535 并继续调试会话。

只影响 IDAIVS 调试会话的限制

目前,GBase Database Add-Ins for Visual Studio 不支持 SPL 函数调试。您只能将 IDAIVS 调试环境用于不向调用上下文返回任何值的 GBase 8s SPL 过程。