这应该不会那么难,但我似乎无法找到我出错的地方。以下给出了语法错误(非常非描述性错误)。我这样做的原因是我最终想用变量中的值替换日期。
非常感谢第二(或第三)组眼睛。
DECLARE @sql nvarchar(1000) = 'SELECT * FROM OPENROWSET (''SQLOLEDB'',''Server=WIN-
T7HOHROSTNT\SQLEXPRESS;TRUSTED_CONNECTION=YES;database = MyDB'',
''SET FMTONLY OFF; SET NOCOUNT ON; EXEC [MyDB].[dbo].[GetCourseReport]
@Start = N''22 Jan 2014 4:00pm'',
@End = N''23 Jan 2014 4:00pm'',
@QueryTime = N''22 Jan 2014 8:00pm'',
@CourseSUID = 1'') AS Result'
EXECUTE sp_executesql @stmt = @sql
我从以下查询中获取上述代码进行复制/粘贴,这确实有效;
SELECT * FROM OPENROWSET ('SQLOLEDB','Server=WIN-T7HOHROSTNT\SQLEXPRESS;TRUSTED_CONNECTION=YES;database = MyDB',
'SET FMTONLY OFF; SET NOCOUNT ON; EXEC [MyDB].[dbo].[GetCourseReport]
@Start = N''22 Jan 2014 4:00pm'',
@End = N''23 Jan 2014 4:00pm'',
@QueryTime = N''22 Jan 2014 8:00pm'',
@CourseSUID = 1') AS Result
答案 0 :(得分:0)
好的,这是一个可怕的工作,但它至少在一个紧张的工作。我通过日期的数字然后检查程序方面,以确定使用哪一个。我在ISO日期看到了搜索结果,但是永远无法使用它。如果其他人得到了一些工作,我很乐意了解它。
DECLARE @startTime DATETIME = CONVERT(DATETIME, '01-22-2014 4:00pm');
DECLARE @endTime DATETIME = CONVERT(DATETIME, '01-23-2014 4:00pm');
DECLARE @queryTime DATETIME = CONVERT(DATETIME, '01-23-2014 2:00am');
DECLARE @sql nvarchar(1000) = N'SELECT * FROM OPENROWSET (''SQLOLEDB'',''Server=WIN-T7HOHROSTNT\SQLEXPRESS;TRUSTED_CONNECTION=YES;database = MyDB'',
''SET FMTONLY OFF; SET NOCOUNT ON; EXEC [MyDB].[dbo].[GetCourseReport]
@Start = NULL,
@End = NULL,
@QueryTime = NULL,
@CourseSUID = NULL,
@StartAsNumber = ' + CONVERT(VARCHAR(20),CONVERT(DECIMAL(18,10), @startTime)) + ',
@EndAsNumber = ' + CONVERT(VARCHAR(20),CONVERT(DECIMAL(18,10), @endTime)) + ',
@QueryAsNumber = ' + CONVERT(VARCHAR(20),CONVERT(DECIMAL(18,10), @queryTime)) + '
'')'
PRINT @sql
EXECUTE sp_executesql @sql