ACIDescribeAny()

ACIDescribeAny()

作用:

获取数据库对象的描述信息。

语法:

sword ACIDescribeAny ( ACISvcCtx       *svchp,
                       ACIError        *errhp,
                       void            *objptr,
                       ub4              objptr_len,
                       ub1              objptr_typ,
                       ub1              info_level,
                       ub1              objtyp,
                       ACIDescribe     *dschp );

参数:

  • svchp (IN)

服务上下文句柄

  • errhp (IN/OUT)

错误句柄,该接口调用失败时,错误信息会存在该句柄上 ,调用 ACIErrorGet 获得错误信息。

  • objptr (IN)

要被描述的对像指针,目前只支持字符串类型指针。字符串字符集需要与 ACIEnvNlsCreate 中指定的charset 一致。objptr_typ参数不能为NULL。支持神通数据库的dblink,格式为:"hr.employees.employee_id@mydb"

  • objnm_len (IN)

objptr 字符串的字节长度。

  • objptr_typ (IN)

仅支持:ACI_OTYPE_NAME

  • info_level (IN)

保留参数,传入:ACI_DEFAULT.

  • objtyp (IN)

被描述的模式对象的类型,支持以下几种:

  • ACI_PTYPE_TABLE, for tables
  • ACI_PTYPE_VIEW, for views
  • ACI_PTYPE_PKG, for packages

不支持的类型,返回值为ACI_INVALID_HANDLE。

  • dschp (IN/OUT)

一个描述符句柄,该句柄可以通过使用ACI_HTYPE_DESCRIBE作为参数调用 ACIHandleAlloc 分配得到,不能为NULL。

说明:

describe句柄上的 ACIParamGet 返回指定位置的参数描述符。参数位置以1开头。在参数描述符上调用 ACIAttrGet 返回存储过程或函数参数或表列描述符的特定属性。这些后续调用不需要到服务器的额外往返行程,因为整个架构对象描述由 ACIDescribeAny 缓存在客户端。在describe句柄上调用 ACIAttrGet 也会返回职位总数。

默认情况下,显式describe( ACIDescribeAny )不会列出不可见的列。若要获取用户定义的不可见列的元数据,必须在调用 ACIDescribeAny 之前设置描述句柄属性ACI_ATTR_SHOW_INVISIBLE_COLUMNS。要了解列是否为不可见类型,可以使用 ACIAttrGet 获得列属性ACI_ATTR_INVISIBLE_COL。