EXECUTE stored_procedure 中描述的语法

作者在 2008-10-09 16:13:31 发布以下内容
 若要唤醒调用函数,请使用   EXECUTE   stored_procedure   中描述的语法。  
   
  语法  
  执行存储过程:  
   
  [   [   EXEC   [   UTE   ]   ]    
          {    
                  [   @return_status   =   ]    
                          {   procedure_name   [   ;number   ]   |   @procedure_name_var    
          }    
          [   [   @parameter   =   ]   {   value   |   @variable   [   OUTPUT   ]   |   [   DEFAULT   ]   ]    
                  [   ,...n   ]    
  [   WITH   RECOMPILE   ]    
   
  执行字符串:  
   
  EXEC   [   UTE   ]   (   {   @string_variable   |   [   N   ]   'tsql_string'   }   [   +   ...n   ]   )    
   
  参数  
  @return_status  
   
  是一个可选的整型变量,保存存储过程的返回状态。这个变量在用于   EXECUTE   语句前,必须在批处理、存储过程或函数中声明过。  
   
  在用于唤醒调用标量值用户定义函数时,@return_status   变量可以是任何标量数据类型。  
   
  procedure_name  
   
  是拟调用的存储过程的完全合法或者不完全合法的名称。过程名称必须符合标识符规则。有关更多信息,请参见使用标识符。无论服务器的代码页或排序方式如何,扩展存储过程的名称总是区分大小写。    
   
  用户可以执行在另一数据库中创建的过程,只要该用户拥有此过程或有在该数据库中执行它的适当的权限。用户可以在另一台运行   Microsoft®   SQL   Server™   的服务器上执行过程,只要该用户有适当的权限使用该服务器(远程访问),并能在数据库中执行该过程。如果指定了服务器名称但没有指定数据库名称,SQL   Server   会在用户默认的数据库中寻找该过程。  
   
  ;number  
   
  是可选的整数,用于将相同名称的过程进行组合,使得它们可以用一句   DROP   PROCEDURE   语句除去。该参数不能用于扩展存储过程。  
   
  在同一应用程序中使用的过程一般都以该方式组合。例如,在订购应用程序中使用的过程可以   orderproc;1、orderproc;2   等来命名。DROP   PROCEDURE   orderproc   语句将除去整个组。在对过程分组后,不能除去组中的单个过程。例如,DROP   PROCEDURE   orderproc;2   是不允许的。有关过程组的更多信息,请参见   CREATE   PROCEDURE。    
   
  @procedure_name_var  
   
  是局部定义变量名,代表存储过程名称。  
   
  @parameter  
   
  是过程参数,在   CREATE   PROCEDURE   语句中定义。参数名称前必须加上符号   (@)。在以   @parameter_name   =   value   格式使用时,参数名称和常量不一定按照   CREATE   PROCEDURE   语句中定义的顺序出现。但是,如果有一个参数使用   @parameter_name   =   value   格式,则其它所有参数都必须使用这种格式。  
   
  默认情况下,参数可为空。如果传递   NULL   参数值,且该参数用于   CREATE   或   ALTER   TABLE   语句中不允许为   NULL   的列(例如,插入至不允许为   NULL   的列),SQL   Server   就会报错。为避免将   NULL   参数值传递给不允许为   NULL   的列,可以在过程中添加程序设计逻辑或采用默认值(使用   CREATE   或   ALTER   TABLE   语句中的   DEFAULT   关键字)。  
   
  value  
   
  是过程中参数的值。如果参数名称没有指定,参数值必须以   CREATE   PROCEDURE   语句中定义的顺序给出。  
   
  如果参数值是一个对象名称、字符串或通过数据库名称或所有者名称进行限制,则整个名称必须用单引号括起来。如果参数值是一个关键字,则该关键字必须用双引号括起来。  
   
  如果在   CREATE   PROCEDURE   语句中定义了默认值,用户执行该过程时可以不必指定参数。如果该过程使用了带   LIKE   关键字的参数名称,则默认值必须是常量,并且可以包含   %、_、[   ]   及   [^]   通配符。  
   
  默认值也可以为   NULL。通常,过程定义会指定当参数值为   NULL   时应该执行的操作。  
   
  @variable  
   
  是用来保存参数或者返回参数的变量。  
   
  OUTPUT  
   
  指定存储过程必须返回一个参数。该存储过程的匹配参数也必须由关键字   OUTPUT   创建。使用游标变量作参数时使用该关键字。  
   
  如果使用   OUTPUT   参数,目的是在调用批处理或过程的其它语句中使用其返回值,则参数值必须作为变量传递(即   @parameter   =   @variable)。如果一个参数在   CREATE   PROCEDURE   语句中不是定义为   OUTPUT   参数,则对该参数指定   OUTPUT   的过程不能执行。不能使用   OUTPUT   将常量传递给存储过程;返回参数需要变量名称。在执行过程之前,必须声明变量的数据类型并赋值。返回参数可以是   text   或   image   数据类型以外的任意数据类型。  
   
  DEFAULT  
   
  根据过程的定义,提供参数的默认值。当过程需要的参数值没有事先定义好的默认值,或缺少参数,或指定了   DEFAULT   关键字,就会出错。  
   
  n  
   
  是占位符,表示在它前面的项目可以多次重复执行。例如,EXECUTE   语句可以指定一个或者多个   @parameter、value   或   @variable。  
   
  WITH   RECOMPILE  
   
  强制编译新的计划。如果所提供的参数为非典型参数或者数据有很大的改变,使用该选项。在以后的程序执行中使用更改过的计划。该选项不能用于扩展存储过程。建议尽量少使用该选项,因为它消耗较多系统资源。  
   
  @string_variable  
   
  是局部变量的名称。@string_variable   可以是   char、varchar、nchar   或   nvarchar   数据类型,最大值为服务器的可用内存。对于   nchar   或   nvarchar   数据类型的字符串,最多可以使用   4,000   个字符;对于   char   或   varchar   数据类型的字符串,最多可以使用   8,000   个字符。如果字符串长度超过   4,000   个字符,则把多个局部变量串联起来用于   EXECUTE   字符串。为了优化性能,请不要使用   4,000   个以上的字符。有关系统提供的   SQL   Server   数据类型更多的信息,请参见数据类型。    
   
  [N]'tsql_string'  
   
  是一个常量,tsql_string   可以是   nvarchar   或   varchar   数据类型。如果包含   N,则该字符串将解释为   nvarchar   数据类型,最大值为服务器的可用内存。如果字符串长度超过   4,000   个字符,则把多个局部变量串联起来用于   EXECUTE   字符串。  
技术文章 | 阅读 7066 次
文章评论,共0条
游客请输入验证码