srv_describe(扩展存储过程 API)

适用范围:SQL Server

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CLR 集成。

定义行中特定列的列名以及源数据类型和目标数据类型。

语法

  
int srv_describe (  
SRV_PROC *  
srvproc  
,  
int  
colnumber  
,  
DBCHAR *  
column_name  
,  
int  
namelen  
,  
DBINT  
desttype  
,  
DBINT  
destlen  
,  
DBINT  
srctype  
,  
DBINT  
srclen  
,  
void *  
srcdata  
);  

参数

srvproc
指向作为特定客户端连接(在本例中为发送相应行的客户端)句柄的 SRV_PROC 结构的指针。 该结构包含扩展存储过程 API 库用于管理应用程序和客户端之间的通信和数据的所有信息。

colnumber
当前不受支持。 必须按顺序描述列。 必须在调用 srv_sendrow 之前对所有列进行描述

column_name
指定数据所属列的名称。 该参数可以为 NULL,因为列不是必须要有名称。

namelen
指定 column_name 的长度(以字节为单位)。 如果 namelen 为 SRV_NULLTERM,则 column_name 必须以 Null 值终止

desttype
指定目标行列的数据类型。 这是发送到客户端的数据类型。 即使数据为 NULL,也必须指定数据类型,有关详细信息,请参阅数据类型(扩展存储过程 API)。

destlen
指定要发送到客户端的数据的长度(单位为字节)。 对于不允许使用 Null 值的固定长度的数据类型,将忽略 destlen。 对于可变长度的数据类型和允许使用 Null 值的固定长度的数据类型,destlen 指定目标数据可以达到的最大长度

srctype
指定源数据的数据类型。

srclen
指定源数据的长度(单位为字节)。 对于固定长度数据类型,则忽略该值。

srcdata
提供特定列的源数据地址。 调用 srv_sendrow 时,它将在 srcdata 处查找 colnumber 的数据。 因此,在调用 srv_sendrow 前不应释放它。 可以通过使用 srv_setcoldata 在 srv_sendrow 的调用之间更改源数据地址。 在将列数据替换为对 srv_setcoldata 的其他调用或调用 srv_senddone 之前,不应释放为 srcdata 分配的内存

如果 desttype 为 SRVDECIMAL 或 SRVNUMERIC,则 srcdata 参数必须为指向 DBNUMERIC 或 DBDECIMAL 结构的指针,并且此结构的精度和小数位数字段必须已设置为所需的值。 您可以使用 DEFAULTPRECISION 指定一个默认精度,使用 DEFAULTSCALE 指定一个默认小数位数。

返回

所描述的列的编号。 第一列为列 1。 如果出现错误,则返回 0。

注解

在首次调用 srv_sendrow 之前,必须为行中的每一列调用一次 srv_describe 函数。 可以按任意顺序描述行的各列。

若要在发送整个结果集之前更改列行中源数据的位置和长度,请分别使用 srv_setcoldata 和 srv_setcollen

有关数据类型和扩展存储过程 API 数据类型转换的说明,请参阅数据类型(扩展存储过程 API)。

如果应用程序中的列名为 Unicode 格式,则在调用 srv_describe 前需要将该列名转换为服务器的多字节代码页。 有关详细信息,请参阅 Unicode 数据和服务器代码页

重要

应全面检查扩展存储过程的源代码,并在生产服务器中安装编译的 DLL 之前,对这些 DLL 进行测试。 有关安全检查和测试的信息,请访问此 Microsoft 网站

另请参阅

srv_sendrow(扩展存储过程 API)
srv_setutype(扩展存储过程 API)
srv_setcoldata(扩展存储过程 API)