我写了简单的程序,应该返回一些数据。
当我只是替换执行查询并放置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
答案 0 :(得分: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