SQL 存儲過程當中QUOTED_IDENTIFIER on/off

http://huihai.iteye.com/blog/1005144sql

在存儲過程當中常常會有sqlserver

Sql代碼 複製代碼  收藏代碼
  1. SET QUOTED_IDENTIFIER on  
  2. SET QUOTED_IDENTIFIER off  
SET QUOTED_IDENTIFIER on
SET QUOTED_IDENTIFIER off

這樣的語句,那麼SET QUOTED_IDENTIFIER究竟是什麼意思,有什麼用呢,今天下午仔細的看了一下。
若是SET QUOTED_IDENTIFIER on時,在建立一個表時,若是這個表的表名,恰好用到了sqlserver的標識符,以下面的狀況ui

Sql代碼 複製代碼  收藏代碼
  1. create table distinct(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  
create table distinct(
 id int not  null constraint pk_1 primary   key,
 value varchar(255),
 flag int
)

上面的語句運行是會出錯的,無論SET QUOTED_IDENTIFIER爲on仍是off,會提示  在關鍵字 'distinct' 附近有語法錯誤。
那是由於distinct是sqlserver的標識符,若是想以distinct爲表時,在QUOTED_IDENTIFIER爲off的狀況下,是不能建立表名爲distinct的表的,由於在QUOTED_IDENTIFIER爲off狀況下,sqlserver的標識符是不容許加引號的,因此在 SET QUOTED_IDENTIFIER  off的狀況下,無論distinct加引號或不加引號或加雙引號都是不能夠的。
可是在 SET QUOTED_IDENTIFIER on 的狀況下是能夠把sqlserver的標識符加上雙引號來建立以sqlserver標識符爲表名的表,可是加單引號也是不能夠的。spa

Sql代碼 複製代碼  收藏代碼
  1. create table "distinct"(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  
create table "distinct"(
 id int not  null constraint pk_1 primary   key,
 value varchar(255),
 flag int
)

能夠運行code

Sql代碼 複製代碼  收藏代碼
  1. create table ‘distinct’(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  
create table ‘distinct’(
 id int not  null constraint pk_1 primary   key,
 value varchar(255),
 flag int
)

不能夠運行server

相關文章
相關標籤/搜索