应用程序可以通过 SQLNumParams 和 SQLDescribeParam 获取准备好的过程调用的元数据。 对于表值参数, DataTypePtr 设置为SQL_SS_TABLE。 可通过 SQLGetDescField 获取其他元数据,以便SQL_CA_SS_TYPE_NAME、SQL_CA_SS_CATALOG_NAME和SQL_CA_SS_SCHEMA_NAME。
SQL_CA_SS_TYPE_NAME、SQL_CA_SS_CATALOG_NAME和SQL_CA_SS_SCHEMA_NAME可用于 SQLColumns,以获取与表值参数关联的表类型的列元数据。 在这种情况下,在调用 SQLColumns 之前,必须将SQL_SOPT_SS_NAME_SCOPE设置为SQL_SS_NAME_SCOPE_TABLE_TYPE。 然后,当应用程序完成检索表值参数列元数据后,应将SQL_SOPT_SS_NAME_SCOPE重新设置为默认值SQL_SS_NAME_SCOPE_TABLE。
SQL_CA_SS_TYPE_NAME、SQL_CA_SS_CATALOG_NAME和SQL_CA_SS_SCHEMA_NAME还可用于 CLR 用户定义的类型参数。
无法获取不是存储过程调用的已准备语句的表值参数元数据。 如果尝试执行此作,应用程序将返回 SQLSTATE 42000 SQL_ERROR,并返回消息“语法错误或访问冲突”。