存储过程学习笔记一

在SQL Server 2005中 存储过程放在了“可编程性”目录内

新建一个存储过程,显示了一段模板,分析如下:

SET ANSI_NULLS ON                                
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
    -- Add the parameters for the stored procedure here
    <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
    <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

 

说明:

<SET ANSI_NULLS ON >

当   SET   ANSI_NULLS   为   ON   时,即使   column_name   中存在空值,使用   WHERE   column_name   =   NULL   的   SELECT   语句仍返回零行。即使   column_name   中存在非空值,使用   WHERE   column_name   <>   NULL   的   SELECT   语句仍返回零行。  
  当   SET   ANSI_NULLS   为   OFF   时,等于   (=)   和不等于   (<>)   比较运算符不遵从   SQL-92   标准。使用   WHERE   column_name   =   NULL   的   SELECT   语句返回   column_name   中含有空值的行。使用   WHERE   column_name   <>   NULL   的   SELECT   语句返回列中含有非空值的行。此外,使用   WHERE   column_name   <>   XYZ_value   的   SELECT   语句返回所有非   XYZ   值和非   NULL的行。 

 

<SET QUOTED IDENTIFIER ON>

当 SET  QUOTED_IDENTIFIER  为OFF时,标识符不可加引号,且必须遵守所有Transact-SQL标识符规则 

 

<SET NOCOUNT ON>

使返回的结果中不包含有关受   Transact-SQL   语句影响的行数的信息。   
语法   
SET   NOCOUNT   {   ON   |   OFF   }   
注释   
当   SET   NOCOUNT   为   ON   时,不返回计数(表示受   Transact-SQL   语句影响的行数)。当SET   NOCOUNT 为 OFF 时,返回计数。   
即使当   SET   NOCOUNT   为   ON   时,也更新   @@ROWCOUNT   函数。   
当 SET   NOCOUNT   为   ON   时,将不给客户端发送存储过程中的每个语句的   DONE_IN_PROC   信息。当使用   Microsoft&reg;   SQL   Server&#8482;   提供的实用工具执行查询时,在   Transact-SQL   语句(如   SELECT、INSERT、UPDATE   和   DELETE)结束时将不会在查询结果中显示"nn   rows   affected"。   
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。   
SET   NOCOUNT   设置是在执行或运行时设置,而不是在分析时设置。 

 

当以上注释存在时,客户端会话设置在存储过程执行期间会被忽略掉。

posted @ 2009-04-22 16:20  斑点海豚---寂静的港湾  阅读(187)  评论(0编辑  收藏  举报