Select * into #tempTable from exec Command shows an error 将执行命令的结果选择全部插入到名为 #tempTable 的临时表中时出现错误。
Select * into #tempTable from exec Command shows an error 将执行命令的结果选择全部插入到名为 #tempTable 的临时表中时出现错误。
我正在执行包含以下代码的字符串:
DECLARE @BadgeNo NVARCHAR(MAX); SET @BadgeNo='8107'; SELECT * INTO #Testing EXEC spNotification 'Param1','Param2','Param3','Param4'; EXEC spSqlTmpTblToHtmlTbl 'tempdb..#Testing'
我只想以html格式获得结果。所以我执行spnotification
来获得结果。
spSqlTmpTblToHtmlTbl
将临时表转换为表格格式。但是,这里有一个问题,我无法从spNotification
的结果中创建临时表。我知道select * into
命令不能与exec
命令一起使用。那么我该如何实现这个?
问题的原因是在使用SELECT * INTO语句中,将EXEC命令嵌套在其中会出现错误。解决方法是使用CREATE TABLE语句创建一个临时表,然后使用INSERT INTO语句将EXEC命令的结果插入到临时表中。
以下是解决方法的示例代码:
CREATE TABLE #Testing ( COLUMN1 INT, COLUMN2 INT ) INSERT INTO #Testing Exec spNotification 'Param1','Param2','Param3','Param4';
另外,你还可以尝试使用OPENQUERY来解决这个问题:
SELECT * INTO #Testing FROM OPENQUERY(YOURSERVERNAME, 'Exec spNotification ''Param1'',''Param2'',''Param3'',''Param4''')
需要注意的是,spNotification会产生动态数据。在某些环境中,可能会限制使用OPENQUERY。
问题:(Select * into #tempTable from exec Command shows an error)这个问题的出现的原因以及解决方法。
原因:在上述代码中,使用了EXEC命令执行存储过程SPNOTIFICATION,并将结果插入到一个临时表中。然而,SELECT INTO语句不能直接从EXEC命令中选择数据插入到临时表中,这导致了错误的发生。
解决方法:要解决这个问题,可以使用INSERT INTO SELECT语句来插入EXEC命令的结果到临时表中。以下是修改后的代码:
INSERT INTO #tempTable EXEC SPNOTIFICATION 'Param1', 'Param2', 'Param3', 'Param4';
通过使用INSERT INTO SELECT语句,我们可以将EXEC命令的结果插入到临时表中,从而避免了错误的发生。