Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH RECOMPILE ]
}
[;]
Execute a character string
{ EXEC | EXECUTE }
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } = ' name ' ]
[;]
Execute a pass-through command against a linked server
{ EXEC | EXECUTE }
( { @string_variable | [ N ] 'command_string' } [ + ...n ]
[ {, { value | @variable [ OUTPUT ] } } [...n] ]
)
[ AS { LOGIN | USER } = ' name ' ]
[ AT linked_server_name ]
[;]
参数
@return_status
可选的整型变量,存储模块的返回状态。这个变量在用于 EXECUTE 语句前,必须在批处理、存储过程或函数中声明过。
在用于调用标量值用户定义函数时,@return_status变量可以是任何标量数据类型module_name
是要调用的存储过程或标量值用户定义函数的完全限定或者不完全限定名称。模块名称必须符合标识符规则。无论服务器的排序规则如何,扩展存储过程的名称总是区分大小写。
用户可以执行在另一数据库中创建的模块,只要运行模块的用户拥有此模块或具有在该数据库中执行该模块的适当权限。用户可以在另一台运行 SQL Server 的服务器中执行模块,只要该用户有相应的权限使用该服务器(远程访问),并能在数据库中执行该模块。如果指定了服务器名称但没有指定数据库名称,则SQL Server 2005 Database Engine会在用户的默认数据库中查找该模块。
;number
是可选整数,用于对同名的过程分组。该参数不能用于扩展存储过程。
注意
后续版本的Microsoft SQL Server将删除该功能。请避免在新的开发工作中使用该功能,并应着手修改当前还在使用该功能的应用程序。
@module_name_var
是局部定义的变量名,代表模块名称。
@parameter
module_name的参数,与在模块中定义的相同。参数名称前必须加上符号 。
在使用@parameter_name=value 格式时,参数名称和常量不必按在模块中定义的顺序提供。但是,如果任何参数使用了 @parameter_name=value 格式,则对后续的所有参数均必须使用该格式。
默认情况下,参数可为空。如果传递NULL参数值,且该参数用于CREATE 或ALTER TABLE 语句,由于在这些语句中引用的列不允许为 NULL值(例如,插入到不允许为NULL 的列),数据库引擎就会引发错误。为避免将NULL参数值传递给不允许为 NULL的列,可以在模块中添加编程逻辑或使用该列的默认值(使用 CREATE或ALTER TABLE语句中的DEFAULT 关键字
value
传递给模块或传递命令的参数值。如果参数名称没有指定,参数值必须以在模块中定义的顺序提供。
对链接服务器执行传递命令时,参数值的顺序取决于链接服务器的OLE DB 访问接口。大多数OLE DB访问接口按从左到右的顺序将值绑定到参数。
如果参数值是一个对象名称、字符串或由数据库名称或架构名称限定,则整个名称必须用单引号括起来。如果参数值是一个关键字,则该关键字必须用双引号括起来。
如果在模块中定义了默认值,用户执行该模块时可以不必指定参数。
默认值也可以为NULL。通常,模块定义会指定当参数值为 NULL 时应该执行的操作。
@variable
是用来存储参数或返回参数的变量
OUTPUT
指定模块或命令字符串返回一个参数。该模块或命令字符串中的匹配参数也必须已使用关键字 OUTPUT创建。使用游标变量作为参数时使用该关键字。
如果value 定义为对链接服务器执行的模块的OUTPUT,则OLE DB 访问接口对相应@parameter 所执行的任何更改都将在模块执行结束时复制回该变量。
如果使用OUTPUT 参数,目的是在调用批处理或模块的其他语句中使用其返回值,则参数值必须作为变量传递,如 @parameter = @variable。如果一个参数在模块中没有定义为OUTPUT 参数,则不能通过对该参数指定 OUTPUT 执行模块。不能使用OUTPUT 将常量传递给模块;返回参数需要变量名称。在执行过程之前,必须声明变量的数据类型并赋值。
当对远程存储过程使用EXECUTE或对链接服务器执行传递命令时,OUTPUT 参数不能是任何大型对象(LOB) 数据类型。
返回参数可以是 LOB 数据类型之外的任意数据类型。
DEFAULT
根据模块的定义,提供参数的默认值。当模块需要的参数值没有定义默认值并且缺少参数或指定了DEFAULT 关键字,会出现错误。
WITH RECOMPILE
执行模块后,强制编译、使用和放弃新计划。如果该模块存在现有查询计划,则该计划将保留在缓存中。
如果所提供的参数为非典型参数或者数据有很大的改变,使用该选项。该选项不能用于扩展存储过程。建议尽量少使用该选项,因为它消耗较多系统资源。
@string_variable
是局部变量的名称。
@string_variable 可以是任意char、varchar、nchar 或 nvarchar数据类型。其中包括(max) 数据类型。
[N] 'tsql_string'
常量字符串。tsql_string 可以是任意 nvarchar 或varchar 数据类型。如果包含N,则字符串将解释为nvarchar数据类型。
AS
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com