sp_passthru <server>, <command>, <errcode>, <errmsg>, <rowcount>
[, <arg1>, <arg2>, ... <argn>]
<server>
是 SQL 命令缓冲区将被传递到的远程服务器的名称。此服务器的类必须是支持的非本地服务器类。
<command>
是 SQL 命令缓冲区。最多可以容纳 255 个字符。
<errcode>
是远程服务器返回的错误代码(如果有)。如果在远程服务器上没有发生任何错误,则返回的值为 0。
<errmsg>
是远程服务器返回的错误消息。最多可以容纳 1024 个字符。只有在 <errcode> 为非零数值时才设置此参数,否则返回 NULL。
<rowcount>
是命令缓冲区中最后一个命令影响的行数。如果该命令是 insert、delete 或 update,则该值表示影响的行数,即使没有返回任何内容。如果最后一个命令是查询,则该值表示从外部服务器返回的行数。
<arg1> … <argn>
接收命令缓冲区中最后一个命令返回的最后一行的结果。您可以指定最多 250 个 <arg> 参数。所有参数都必须被声明为输出参数。
返回输出参数 <@oradate> 中来自 Oracle 服务器的日期。如果发生 Oracle 错误,则错误代码将放置在 <@errcode> 中,而相应消息将放置在 <@errmsg> 中,并且 <@rowcount> 设置为 1。
sp_passthru ORACLE, "select date from dual", <@errcode> output,
<@errmsg> output, <@rowcount> output, <@oradate> output
sp_passthru 使用户可以将 SQL 命令缓冲区传递到远程服务器。假定所传递的一个或多个 SQL 语句的语法是接收缓冲区的服务器类的本机语法。不执行任何转换或解释。远程服务器的结果被放置在输出参数中(可选)。
只有在安装和配置了组件集成服务的情况下才使用 sp_passthru。
您可以在命令缓冲区中包括多个命令。对于某些服务器类,这些命令必须用分号分隔。
输出参数 <arg1> ... <argn> 将被设置为由命令缓冲区中最后一个命令返回的最后一行的相应列的值。该参数的位置将决定该参数将包含哪个列的值。<arg1> 从列 1 接收值,<arg2> 从列 2 接收值,依此类推。
如果所具有的可选参数的数目少于返回的列数,则忽略超出的列。如果参数数目超过列数,则剩余参数将被设置为 NULL。
将进行尝试以将每一列转换为输出参数的数据类型。如果这些数据类型类似,足以允许隐式 转换,则尝试将成功。