-1

我写了简单的程序,应该返回一些数据。
当我简单地替换执行查询并将SELECT 1它返回时1。但是当我粘贴EXECUTE查询时,它什么也不返回。
我该怎么办?

ALTER PROCEDURE [dbo].[PTC_Repor] 
    @camp       VARCHAR(50),
    @StartTime  DATETIME,
    @EndTime    DATETIME    
AS
BEGIN

    EXECUTE('
    SELECT      ID,NAME
    FROM        [hpsdb].[dbo]. [' + @camp + ']
    WHERE       IS_CLEAR = 0
    AND     SUCCESS_COUNT = 0 
    AND     DATA_STATUS = 5
    AND     CALL_TIME > ''' + @StartTime + '''
    AND     CALL_TIME <= ''' + @EndTime + '''
 ')

END
GO
4

1 回答 1

3

您可以尝试使用sp_executesql,这样您就可以直接传递日期时间值,而不是强制它们成为字符串:

declare @Parms nvarchar(max)
set @Parms = '@StartTime datetime, @EndTime datetime'
declare @SQL nvarchar(max)
set @SQL = 'SELECT      ID,NAME
  FROM        [hpsdb].[dbo]. [' + @camp + ']
  WHERE       IS_CLEAR = 0
  AND     SUCCESS_COUNT = 0 
  AND     DATA_STATUS = 5
  AND     CALL_TIME > @StartTime
  AND     CALL_TIME <= @EndTime'

EXEC sp_executesql @SQL,@Prams,@StartTime,@EndTime
于 2013-10-18T09:25:24.720 回答