关于存储过程

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

请大家给我讲下写存储过程的步骤,拿个简单例子讲下,  
          谢谢,(不是很懂的不要乱发帖,会误导^^)

· 网友精彩回答:

发表者:cmslovehxh

create   procedure  
  创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的   transact-sql   语句的集合。  
   
  可以创建一个过程供永久使用,或在一个会话中临时使用,或在所有会话中临时使用。  
   
  也可以创建在   microsoft®   sql   server™   启动时自动运行的存储过程。  
   
  语法  
  create   proc   [   edure   ]   procedure_name   [   ;   number   ]  
          [   {   @parameter   data_type   }  
                  [   varying   ]   [   =   default   ]   [   output   ]  
          ]   [   ,...n   ]    
   
  [   with  
          {   recompile   |   encryption   |   recompile   ,   encryption   }   ]    
   
  [   for   replication   ]    
   
  as   sql_statement   [   ...n   ]    
   
   
  参数  
  procedure_name  
   
  新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。有关更多信息,请参见使用标识符。  
   
  要创建局部临时过程,可以在   procedure_name   前面加一个编号符   (#procedure_name),要创建全局临时过程,可以在   procedure_name   前面加两个编号符   (##procedure_name)。完整的名称不能超过   128   个字符。指定过程所有者的名称是可选的。  
   
  ;number  
   
  是可选的整数,用来对同名的过程分组,以便用一条   drop   procedure   语句即可将同组的过程一起除去。例如,名为   orders   的应用程序使用的过程可以命名为   orderproc;1、orderproc;2   等。drop   procedure   orderproc   语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在   procedure_name   前后使用适当的定界符。  
   
  @parameter  
   
  过程中的参数。在   create   procedure   语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值。存储过程最多可以有   2.100   个参数。  
   
  使用   @   符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见   execute。    
   
  data_type  
   
  参数的数据类型。所有数据类型均可以用作存储过程的参数。不过,cursor   数据类型只能用于   output   参数。如果指定的数据类型为   cursor,也必须同时指定   varying   和   output   关键字。有关   sql   server   提供的数据类型及其语法的更多信息,请参见数据类型。    
   
   
   
  说明     对于可以是   cursor   数据类型的输出参数,没有最大数目的限制。  
   
   
  varying  
   
  指定作为输出参数支持的结果集。仅适用于游标参数。  
   
  default  
   
  参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或   null。如果过程将对该参数使用   like   关键字,那么默认值中可以包含通配符。  
   
  output  
   
  表明参数是返回参数。该选项的值可以返回给   exec[ute]。使用   output   参数可将信息返回给调用过程。text、ntext   和   image   参数可用作   output   参数。使用   output   关键字的输出参数可以是游标占位符。  
   
  n  
   
  表示最多可以指定   2.100   个参数的占位符。  
   
  {recompile   |   encryption   |   recompile,   encryption}  
   
  recompile   表明   sql   server   不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用   recompile   选项。  
   
  encryption   表示   sql   server   加密   syscomments   表中包含   create   procedure   语句文本的条目。使用   encryption   可防止将过程作为   sql   server   复制的一部分发布。  
   
   
   
  说明     在升级过程中,sql   server   利用存储在   syscomments   中的加密注释来重新创建加密过程。  
   
   
  for   replication  
   
  指定不能在订阅服务器上执行为复制创建的存储过程。.使用   for   replication   选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和   with   recompile   选项一起使用。  
   
  as  
   
  指定过程要执行的操作。  
   
  sql_statement  
   
  过程中要包含的任意数目和类型的   transact-sql   语句。但有一些限制。  
   
  n  
   
  是表示此过程可以包含多条   transact-sql   语句的占位符。  
   
  注释  
  存储过程的最大大小为   128   mb。  
   
  用户定义的存储过程只能在当前数据库中创建。在单个批处理中,create   procedure   语句不能与其它   transact-sql   语句组合使用。    
   
  默认情况下,参数可为空。如果传递   null   参数值并且该参数在   create   或   alter   table   语句中使用,而该语句中引用的列又不允许使用   null,则   sql   server   会产生一条错误信息。为了防止向不允许使用   null   的列传递   null   参数值,应向过程中添加编程逻辑或为该列使用默认值。如果某个连接执行的存储过程对这些选项的设置与创建该过程的连接的设置不同,则为第二个连接创建的表列可能会有不同的为空性,并且表现出不同的行为方式。如果为每个列显式声明了   null   或   not   null,那么将对所有执行该存储过程的连接使用相同的为空性创建临时表。  
   
  在创建或更改存储过程时,sql   server   将保存   set   quoted_identifier   和   set   ansi_nulls   的设置。执行存储过程时,将使用这些原始设置。因此,所有客户端会话的   set   quoted_identifier   和   set   ansi_nulls   设置在执行存储过程时都将被忽略。在存储过程中出现的   set   quoted_identifier   和   set   ansi_nulls   语句不影响存储过程的功能。  
   
  其它   set   选项在创建或更改存储过程时不保存。如果存储过程的逻辑取决于特定的设置,应在过程开头添加一条   set   语句,以确保设置正确。从存储过程中执行   set   语句时,该设置只在存储过程完成之前有效。之后,设置将恢复为调用存储  
   
   
  看sql   server联机帮助

发表者:chjpeng

http://www.d9soft.com/article/121/article5883_1.htm  
   
  http://dev.csdn.net/article/72/72672.shtm  
   
   
  ...

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved