发现一个Exec执行执行存储过程的问题

 

  Set   @SqlstrGetCount   =   ' SELECT  @TotalRowsCount = COUNT(*) FROM EventLog where  '
 
DECLARE   @ParameterDefinition   Nvarchar ( 4000 )
 
SET   @ParameterDefinition   =   '  
       @TotalRowsCount  int ,
       @EventLogType tinyint,
       @Category nvarchar(20),
       @UserName nvarchar(20),
       @BeginTime dateTime,
       @EndTime dateTime
'
 
EXEC   sp_executesql  @SqlstrGetCount @ParameterDefinition  , @TotalRowsCount  , @EventLogType , @Category , @UserName , @BeginTime , @EndTime

  发现 
@TotalRowsCount  始终为0 ,百思不得其解,后来只好换为:

 
Set   @SqlstrGetCount   =   ' SELECT  COUNT(*) as TotalRowsCount  FROM EventLog where  '
 
DECLARE   @ParameterDefinition   Nvarchar ( 4000 )
 
SET   @ParameterDefinition   =   '  
     @EventLogType tinyint,
     @Category nvarchar(20),
     @UserName nvarchar(20),
     @BeginTime dateTime,
     @EndTime dateTime
'
 
EXEC   sp_executesql  @SqlstrGetCount @ParameterDefinition  , @EventLogType , @Category , @UserName , @BeginTime , @EndTime

在MS SQL中,写函数时,参数一定不要忘了给范围大小,上次遇到这个问题查了我好久啊!~不知道其它数据库会不会也这样!

你可能感兴趣的:(存储过程)