srv_describe(扩展存储过程 API)
重要提示 |
---|
后续版本的 Microsoft 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 网站。 |