srv_paramset(扩展存储过程 API)
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。请改用 CLR 集成。 |
设置远程存储过程调用返回参数的值。此函数已被 srv_paramsetoutput 函数取代。
语法
int srv_paramset (
SRV_PROC *
srvproc
,
int
n
,
void *
data
,
int
len
);
参数
srvproc
是 SRV_PROC 结构的指针,该结构是特定客户端连接的句柄(在这里是接收远程存储过程调用的句柄)。此结构包含扩展存储过程 API 库用于管理应用程序和客户端之间的通信和数据的信息。n
指示要设置的参数的编号。第一个参数是 1。data
是指向要发送回客户端的数据值的指针,该数据值将作为远程存储过程返回参数。len
指定要返回的数据的实际长度。如果参数的数据类型的长度为常量且该数据类型不允许 Null 值(例如 srvbit 或 srvint1),则将会忽略 len。
返回值
如果参数值设置成功,则返回 SUCCEED,否则返回 FAIL。如果属于以下情况则返回 FAIL:无当前远程存储过程、没有第 n 个远程存储过程参数、参数不是返回参数以及 len 参数是非法的。
如果 len为 0,则返回 NULL。将 len 设置为 0 是将 NULL 返回给客户端的唯一方法。
如果该参数属于 Microsoft SQL Server 2005 数据类型之一,则此函数返回以下值。
新数据类型 |
返回数据长度 |
---|---|
BITN |
NULL:len = 0, data = IG, RET = 0 ZERO: N/A >=255: N/A <255: N/A |
BIGVARCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGBINARY |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGVARBINARY |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NVARCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NTEXT |
NULL:len = IG, data = IG, RET = 0 ZERO:len = IG, data = IG, RET = 0 >=255:len = IG, data = IG, RET = 0 <255:len = IG, data = IG, RET = 0 |
RET = srv_paramset 的返回值 |
|
IG = 将忽略值 |
|
valid = 任何有效的数据指针 |
|
注释
参数包含通过远程存储过程在客户端和应用程序之间传递的数据。客户端可以指定某些参数作为返回参数。这些返回参数可包含开放式数据服务服务器应用程序传递回客户端的值。使用返回参数类似于通过引用传递参数。
不能设置未作为返回参数调用的参数的返回值。可以使用 srv_paramstatus 来确定参数的调用方式。
此函数会为参数设置返回值,但它不会向客户端实际发送返回值。在设置了状态标记 SRV_DONE_FINAL 的情况下调用 srv_senddone 时,所有返回参数(无论是否使用 srv_paramset 设置了返回值)都会自动发送到客户端。
用参数进行远程存储过程调用时,可以按名称或位置(未命名)传递参数。如果进行远程存储过程调用时,一些参数按名称传递而另一些按位置传递,则会出现错误。这时仍然会调用 SRV_RPC 处理程序,但此过程就像没有参数般进行,并且 srv_rpcparams 返回 0。
安全说明 |
---|
应全面检查扩展存储过程的源代码,并在生产服务器上安装编译的 DLL 之前,对这些 DLL 进行测试。有关安全检查和测试的信息,请参阅该 Microsoft 网站。 |