为什么在存储过程中要使用SET QUOTED_IDENTIFIER ON?
在数据库中新建存储过程的时候,默认都会有一个"SET QUOTED_IDENTIFIER ON"语句在前面。那么,这句话到底是什么意思呢?QUOTED_IDENTIFIER ON与SET QUOTED_IDENTIFIER OFF的区别在哪里呢?
QUOTED_IDENTIFIER ON与SET QUOTED_IDENTIFIER OFF的作用
1. 创建存储过程的默认行为
通过SQL Server数据库管理工具创建的存储过程,在代码的最前面会默认加上"SET QUOTED_IDENTIFIER ON"语句。这个语句用于设置当前会话的QUOTED_IDENTIFIER选项。
2. 区分关键字和字符串
SET QUOTED_IDENTIFIER ON的作用是让系统关键字和普通字符串之间能够正确地进行区分。当该选项打开时,系统将把被双引号("")包围的内容识别为普通字符串,而不是关键字。
3. 避免语法错误
开启SET QUOTED_IDENTIFIER ON后,如果在SQL语句中存在与系统关键字重复的字符串,可以使用双引号将其括起来,以避免语法错误的发生。否则,系统会认为该字符串是关键字,并报错。
演示SET QUOTED_IDENTIFIER ON的作用
以下是演示SET QUOTED_IDENTIFIER ON作用的步骤:
1. SQL Server Management Studio中创建查询窗口
在SQL Server Management Studio管理工具中点击【新建查询】,创建一个新的SQL语句书写窗口,后续的所有SQL语句都在这个新的窗口中演示。
2. 开启SET QUOTED_IDENTIFIER ON
输入"SET QUOTED_IDENTIFIER ON",然后尝试创建一个表名为"distinct"的表。在写完SQL语句后,可以看到"distinct"下面有一道红色的波浪线,表示存在语法错误。
3. 检查SQL语法是否正确
点击上方菜单栏的勾勾图标,检查当前窗口中的SQL语法是否正确。检测结果显示,开启SET QUOTED_IDENTIFIER ON时,"distinct"与系统关键字重复,所以不能通过检查。
4. 使用双引号解决关键字重复问题
假设开启SET QUOTED_IDENTIFIER ON,并且必须创建名为"distinct"的表,可以使用双引号将"distinct"括起来。在执行按钮后,就可以看到该表成功创建。
5. 关闭SET QUOTED_IDENTIFIER OFF
关闭SET QUOTED_IDENTIFIER OFF后,即使"distinct"被双引号括起来,仍然会报语法错误。SQL语句不会得到执行。
6. 关闭SET QUOTED_IDENTIFIER OFF并去除双引号
关闭SET QUOTED_IDENTIFIER OFF后,如果去掉"distinct"的双引号,仍然会报语法错误。SQL语句还是不会得到执行。
总结
1. SET QUOTED_IDENTIFIER ON:与系统关键字重复的字符串,允许使用双引号括起来,就能正常使用。注意要使用双引号。
2. SET QUOTED_IDENTIFIER OFF:与系统关键字重复的字符串,不允许使用双引号括起来。应避免使用与关键字重复的字符串,以避免语法错误。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。