日期:2014-05-18  浏览次数:20409 次

请教一个存储过程的简单问题
SET   QUOTED_IDENTIFIER   OFF  
GO
SET   ANSI_NULLS   ON  
GO

/*
-------------------------------------------
名称:P_Common_Insert
功能:通用的增加一条记录的存储过程
-------------------------------------------
*/
CREATE               PROCEDURE   P_Common_Insert
(
@tblName   varchar(20),   --   表名  
@strFields   varchar(2000)   , --列
@strFieldsValue   varchar(8000), --列的值
@UpdUserCode varchar(6),
@ID_Type char(1), --发号类型:0为不发号,1为自动编号
@ID_Start varchar(20) --发号初始值
)
AS
begin
declare @CustCode varchar(20), --所发的号
@strSQL   varchar(8000)   --   主语句
if(@ID_Type   =   '0 ')       --不用发号
begin
set   @strSQL=N 'insert   into   '   +   @tblName   + '( '   +@strFields+   ',updusercode,updtime)     values( '+   @strFieldsValue   + ', ' ' '+@UpdUserCode+ ' ' ',getdate()) '
end  

if(@ID_Type   =   '1 ')       --自动编号
begin
set   @strSQL=N 'insert   into   '   +   @tblName   + '( '   +@strFields+   ',updusercode,updtime)     values( '+   @strFieldsValue   + ', ' ' '+@UpdUserCode+ ' ' ',getdate()) '
set   @CustCode   =   @@identity//N????? ' ' '   set   select  
end

exec   (@strSQL)
select   @CustCode//?????????
end
GO
SET   QUOTED_IDENTIFIER   OFF   //?
GO
SET   ANSI_NULLS   ON  
GO

请问:SET   QUOTED_IDENTIFIER   OFF  
GO
SET   ANSI_NULLS   ON  
GO
有什么作用??
set   @CustCode   =   @@identity是什么意思?set与select   有什么区别??
select   @CustCode?是什么意思?
为什么发号与不用发号的语句set   @strSQL=N 'insert   into   '   +   @tblName   + '( '   +@strFields+   ',updusercode,updtime)     values( '+   @strFieldsValue   + ', ' ' '+@UpdUserCode+ ' ' ',getdate()) '是一样的。
语句中的 ' ' '是什么意思?小弟初学忘指点谢谢!


------解决方案--------------------
单引号之间是SQL里的字符串常量,两个单引号在一起表示转义,用于字符串常量与变量拼接的时候,相当于字符串常量中的一个单引号。