为何只要写存贮过程,在开始处和结尾处系统都会自动增加两个设置呢(set ansi_nulls 和 set quoted_identifier)
-----------------------------------
类似的设置非常多,但好象这两个设置比较特别,是系统自动加进入的,无法删除。
我不明白这是为什么?而且我没找到规律,--开始:
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GOGO
--最后:
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO--也有时,
--开始:
SET QUOTED_IDENTIFIER on
GO
SET ANSI_NULLS ON 
GOGO
--最后:
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO--好象没有规律,这是为什么呀?

解决方案 »

  1.   

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

  2.   


    SET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO
    ALTER      proc tmptmp 
    as 
    select *
    from gzda
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO以前是一个简单的存贮过程,为什么开头和最后的四句设置,我无法修改。
    总是
    on
    on
    off
    on
    我如何可以修改呀?
    我看到别人写的存贮过程有改过的呀,为何我就是改不了呢?