微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

执行sp_executeSql以选择…到#table但不能选择临时表数据

试图在sp_Executedsql中选择…到临时表#TempTable.
不是它成功插入或没有但有消息那里写
(359行(s)受影响)意味着成功插入?
下面的脚本
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'select distinct Coloum1,Coloum2 into #TempTable 
            from SPCTable with(nolock)
            where Convert(varchar(10),Date_Tm,120) Between @Date_From And @Date_To';

SET @sql = 'DECLARE @Date_From VARCHAR(10);
            DECLARE @Date_To VARCHAR(10);
            SET @Date_From = '''+CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,GETDATE()),0)-1,120)+''';
            SET @Date_To = '''+CONVERT(VARCHAR(10),120)+''';
            '+ @sql;

EXECUTE sp_executesql @sql;

执行后,它返回我的消息(359行受影响).
接下来尝试从#TempTable中选择数据时.

Select * From #TempTable;

它回报我:

Msg 208,Level 16,State 0,Line 2
Invalid object name '#TempTable'.

怀疑它只在’选择’部分工作.插入不起作用.
如何解决

解决方法

本地临时表#table_name仅在当前会话中可见,全局临时## table_name表在所有会话中都可见.他们都会一直活着直到会议结束. sp_executesql – 创建自己的会话(也许单词“scope”会更好),这就是它发生的原因.

原文地址:https://www.jb51.cc/mssql/84038.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐