if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_GetEmployeesByPage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_GetEmployeesByPage]
GO
功能是判断GetEmployeesByPage存储过程是否已存在,如果已经有了,就删除它

解决方案 »

  1.   

    SET QUOTED_IDENTIFIER
    使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是 Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。语法
    SET QUOTED_IDENTIFIER { ON | OFF }注释
    当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 ('') 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列上的索引视图和索引所必需的 SET 选项设置的更多信息,请参见 SET 中的"使用 SET 语句时的注意事项"。在进行连接时,SQL Server ODBC 驱动程序和用于 SQL Server 的 Microsoft OLE DB 提供程序自动将 QUOTED_IDENTIFIER 设置为 ON。这可以在 ODBC 数据源、ODBC 连接特性或 OLE DB 连接属性中进行配置。对来自 DB-Library 应用程序的连接,SET QUOTED_IDENTIFIER 设置默认为 OFF。当创建存储过程时,将捕获 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 设置,用于该存储过程的后续调用。当在存储过程内执行 SET QUOTED_IDENTIFIER 时,其设置不更改。当 SET ANSI_DEFAULTS 为 ON时,将启用 SET QUOTED_IDENTIFIER。SET QUOTED_IDENTIFIER 还与 sp_dboption 的 quoted identifier 设置相对应。如果 SET QUOTED_IDENTIFIER 为 OFF,则 SQL Server 使用 sp_dboption 的 quoted identifier 设置。有关数据库设置的更多信息,请参见 sp_dboption 和设置数据库选项。SET QUOTED_IDENTIFIER 是在分析时进行设置的。在分析时进行设置意味着:SET 语句只要出现在批处理或存储过程中即生效,与代码执行实际上是否到达该点无关;并且 SET 语句在任何语句执行之前生效。权限
    SET QUOTED_IDENTIFIER 权限默认授予所有用户。示例
    A. 使用被引用的标识符设置和保留字对象名
    下例显示 SET QUOTED_IDENTIFIER 设置必须为 ON,而且表名内的关键字必须在双引号内,才能创建和使用带保留关键字的对象名。SET QUOTED_IDENTIFIER OFF
    GO
    -- Attempt to create a table with a reserved keyword as a name
    -- should fail.
    CREATE TABLE "select" ("identity" int IDENTITY, "order" int)
    GOSET QUOTED_IDENTIFIER ON
    GO-- Will succeed.
    CREATE TABLE "select" ("identity" int IDENTITY, "order" int)
    GOSELECT "identity","order" 
    FROM "select"
    ORDER BY "order"
    GODROP TABLE "SELECT"
    GOSET QUOTED_IDENTIFIER OFF
    GOB. 在被引用的标识符设置中使用单引号和双引号
    下例显示将 SET QUOTED_IDENTIFIER 设置为 ON 和 OFF 时,在字符串表达式中使用单引号和双引号的方式。SET QUOTED_IDENTIFIER OFF
    GO
    USE pubs
    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
          WHERE TABLE_NAME = 'Test')
       DROP TABLE Test
    GO
    USE pubs
    CREATE TABLE Test ( Id int, String varchar (30) ) 
    GO-- Literal strings can be in single or double quotation s.
    INSERT INTO Test VALUES (1,"'Text in single quotes'")
    INSERT INTO Test VALUES (2,'''Text in single quotes''')
    INSERT INTO Test VALUES (3,'Text with 2 '''' single quotes')
    INSERT INTO Test VALUES (4,'"Text in double quotes"')
    INSERT INTO Test VALUES (5,"""Text in double quotes""")
    INSERT INTO Test VALUES (6,"Text with 2 """" double quotes")
    GOSET QUOTED_IDENTIFIER ON
    GO-- Strings inside double quotation s are now treated 
    -- as object names, so they cannot be used for literals.
    INSERT INTO "Test" VALUES (7,'Text with a single '' quote')
    GO-- Object identifiers do not have to be in double quotation s
    -- if they are not reserved keywords.
    SELECT * 
    FROM Test
    GODROP TABLE Test
    GOSET QUOTED_IDENTIFIER OFF
    GO下面是结果集:Id          String                         
    ----------- ------------------------------ 
    1           'Text in single quotes'        
    2           'Text in single quotes'        
    3           Text with 2 '' single quotes   
    4           "Text in double quotes"        
    5           "Text in double quotes"        
    6           Text with 2 "" double quotes   
    7           Text with a single ' quote    
      

  2.   

    SET ANSI_NULLS
    指定在对空值使用等于 (=) 和不等于 (<>) 比较运算符时,这些运算符的 SQL-92 遵从行为。语法
    SET ANSI_NULLS {ON | OFF}注释
    SQL-92 标准要求对空值的等于 (=) 或不等于 (<>) 比较取值为 FALSE。当 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的行。说明  Microsoft&reg; SQL Server&#8482; 是将空字符串解释为单个空格还是真正的空字符串,取决于 sp_dbcmptlevel 的兼容级别设置。如果兼容级别小于或等于 65,SQL Server 就将空字符串解释为单个空格。如果兼容级别等于 70,则 SQL Server 将空字符串解释为空字符串。有关更多信息,请参见 sp_dbcmptlevel。
    当 SET ANSI_NULLS 为 ON 时,所有对空值的比较均取值为 UNKNOWN。当 SET ANSI_NULLS 为 OFF 时,如果数据值是 NULL,则所有数据对空值的比较将取值为 TRUE。如果未指定,则应用当前数据库的 ANSI nulls 选项的设置。有关 ANSI nulls 数据库选项的更多信息,请参见 sp_dboption 和设置数据库选项。为使脚本按预期运行,不管 ANSI nulls 数据库选项或 SET ANSI_NULLS 的设置是什么,在可能包含空值的比较中使用 IS NULL 和 IS NOT NULL。对于存储过程,SQL Server 使用最初创建存储过程时的 SET ANSI_NULLS 设置值。无论随后何时执行存储过程,SET ANSI_NULLS 的设置都还原为其最初使用的值并生效。当在存储过程内唤醒调用 SET ANSI_NULLS 时,其设置不更改。在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。在计算列或索引视图上创建或操作索引时,SET ANSI_NULLS 也必须为 ON。如果 SET ANSI_NULLS 为 OFF,计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。SQL Server 将返回一个错误,列出所有违反所需值的 SET 选项。另外,在执行 SELECT 语句时,如果 SET ANSI_NULLS 为 OFF,则 SQL Server 将忽略计算列或视图上的索引值并解析选择,就好象表或视图上没有这样的索引一样。说明  ANSI_NULLS 是在处理计算列或索引视图上的索引时必须设置为所需值的七个 SET 选项之一。还必须将选项 ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 设置为 ON,而必须将 NUMERIC_ROUNDABORT 设置为 OFF。
    SQL Server ODBC 驱动程序和用于 SQL Server 的 Microsoft OLE DB 提供程序在连接时自动将 ANSI_NULLS 设置为 ON。该设置可以在 ODBC 数据源、ODBC 连接特性或 OLE DB 连接属性(它们在连接到 SQL Server 之前在应用程序中设置)中进行配置。对来自 DB-Library 应用程序的连接,SET ANSI_NULLS 默认为 OFF。当 SET ANSI_DEFAULTS 为 ON 时,将启用 SET ANSI_NULLS。SET ANSI_NULLS 的设置是在执行或运行时设置,而不是在分析时设置。权限
    SET ANSI_NULLS 权限默认授予所有用户。示例
    下例使用等于 (=) 和不等于 (<>) 比较运算符对表中的 NULL 值和非空值进行比较。下例还显示 IS NULL 不受 SET ANSI_NULLS 设置的影响。-- Create table t1 and insert values.
    CREATE TABLE t1 (a int null)
    INSERT INTO t1 values (NULL)
    INSERT INTO t1 values (0)
    INSERT INTO t1 values (1)
    GO
    -- Print message and perform SELECT statements.
    PRINT 'Testing default setting'
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT * 
    FROM t1 
    WHERE a = @varname
    SELECT * 
    FROM t1 
    WHERE a <> @varname
    SELECT * 
    FROM t1 
    WHERE a IS NULL
    GO
    -- SET ANSI_NULLS to ON and test.
    PRINT 'Testing ANSI_NULLS ON'
    SET ANSI_NULLS ON
    GO
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT * 
    FROM t1 
    WHERE a = @varname
    SELECT * 
    FROM t1 
    WHERE a <> @varname
    SELECT * 
    FROM t1 
    WHERE a IS NULL
    GO
    -- SET ANSI_NULLS to OFF and test.
    PRINT 'Testing SET ANSI_NULLS OFF'
    SET ANSI_NULLS OFF
    GO
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT * 
    FROM t1 
    WHERE a = @varname
    SELECT * 
    FROM t1 
    WHERE a <> @varname
    SELECT * 
    FROM t1 
    WHERE a IS NULL
    GO
    -- Drop table t1.
    DROP TABLE t1
    GO
      

  3.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_GetEmployeesByPage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[sp_GetEmployeesByPage]
    GO
    --如果系统中有存储过程 sp_GetEmployeesByPage 则删除存储过程 sp_GetEmployeesByPageSET QUOTED_IDENTIFIER OFF 
    GO
    --当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号 文字可以由单引号或双引号分隔。
    SET ANSI_NULLS OFF 
    GO
    ---SQL-92 标准要求对空值的等于 (=) 或不等于 (<>) 比较取值为 FALSE。当 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 ANSI_NULLS 为 ON 时,所有对空值的比较均取值为 UNKNOWN。当 SET ANSI_NULLS 为 OFF 时,如果数据值是 NULL,则所有数据对空值的比较将取值为 TRUE。如果未指定,则应用当前数据库的 ANSI nulls 选项的设置
      

  4.   

    当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。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的行。