为 DB2 自定义包调用静态 SQL

包命名约定

DRDA 使用由这些多个部分组成的 PKGNAM (RDB 包名称)定义完全限定的静态 SQL 包。

  • RDBNAM (关系数据库名称)

  • RDBCOLID (RDB 集合标识符)

  • PKGID (RDB 包标识符)

    RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN

    具有一致性令牌的完全限定包名称。

注释

如果多个包的 PKGNAM 值相同,则包由 VRSNAM(版本名称)或 PKGCNSTKN(包名称一致性令牌)进行区分。

  • PKGCNSTKN(RDB 包一致性校验码)

  • VRSNAM (版本名称)

执行静态 SQL 语句

您可以使用 ADO.NET 的命令和参数对象,通过 EXEC STATIC 语法引用完全限定的包名称来执行静态 SQL 语句。

EXEC STATIC RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN

使用完全限定的包名称执行静态 SQL 语句的命令语法。

或者,可以使用 ADO.NET Command 和 Parameter 对象通过引用包别名的 CALL 语法执行静态 SQL 语句。

CALL RDBNAME.RDBCOLID.PKALIAS.PKGSN

使用包别名执行静态 SQL 语句的命令语法。

注释

绑定包时,必须为 Alias (V85) 或 packageSectionAlias (V90) 指定值。

静态 SQL 结果集元数据

Microsoft DRDA 客户端可以使用早期元数据或后期元数据来解释结果集列。

使用早期元数据的结果集

可以使用包 XML 中指定的早期元数据来定义结果集列(数据类型、编码)。 首先,在结果集元素中指定一个或多个 Column 元素。 其次,将 MsDb2Client 连接属性“使用早期元数据”设置为 true。 第三,使用 MsDb2Client 属性加载 DB2 包 XML 文件的静态 SQL。

使用后期元数据的结果集

可以使用 DRDA 服务器返回的后期元数据来定义结果集列(数据类型、编码),方法是将 MsDb2Client 连接属性“使用早期元数据”设置为 false。