2016 - 2024

感恩一路有你

为什么在存储过程中要使用SET QUOTED_IDENTIFIER ON?

浏览量:3877 时间:2024-07-09 09:25:19 作者:采采

在数据库中新建存储过程的时候,默认都会有一个"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:与系统关键字重复的字符串,不允许使用双引号括起来。应避免使用与关键字重复的字符串,以避免语法错误。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。