在sql存储过程中,经常使用到动态sql语句,写法类似于这样

Set @strParameter=N'@StartTime datetime,@EndTime datetime'
Exec sp_executesql @strSql,@strParameter,@StartTime,@EndTime    

为了满足业务需求,我们经常会在存储过程中使用到临时表。根据作用域的不同,分为全局临时表和用户临时表。

如果在动态sql语句中构造了用户临时表,代码如下:

exec SP_EXECUTESQL N'SELECT * INTO #temp FROM TestTable'
SELECT * FROM #temp

执行后会报如下错误

消息 208,级别 16,状态 0,第 37 行
对象名 '#temp' 无效。

在ssms中调试,执行到该动态SQL语句时
会出现异常“未将对象设置引用到对象实例”
这是由于临时表只存在于动态sql这个作用域内,也就是只在动态SQL可见,在当前存储过程中是不可见的,所以会出现找不到该临时表的错误。

首先创建测试表

IF object_id('TestTable') IS NOT NULLDROP TABLE TestTable
GOCREATE TABLE TestTable(id INT IDENTITY(1,1),Info VARCHAR(10))
GO
INSERT TestTable SELECT 'a'
UNION ALL SELECT 'b'
GO

然后依次执行以下三个脚本

脚本一:

EXEC('SELECT * INTO #temp FROM TestTable')
SELECT * FROM #temp

脚本二:

exec SP_EXECUTESQL N'SELECT * INTO #temp FROM TestTable'
SELECT * FROM #temp

脚本三:

SELECT * INTO #temp FROM TestTable
EXEC('SELECT * FROM #temp')

–DROP TABLE #temp

执行后发现只有脚本三是成功的,其他连个脚本执行后都会提示:

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

知道了问题出现的原因,解决方案很简单,将用户临时表替换为全局临时表就ok了,也就是在#temp前再加个‘#’,即 ##Temp

SQL Server 2012 在sp_executesql 中生成的临时表的可见性相关推荐

  1. SQL Server 2012 安装过程中出现:试图执行未经授权的操作..

    SQL Server 2012 安装过程中出现:试图执行未经授权的操作- 操作系统:win10 家庭版/专业版 错误描述:刚开始安装的时候 出现错误:试图执行未授权的操作 安装进度进行到最后的四分之一 ...

  2. SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?...

    本文出处:http://www.cnblogs.com/wy123/p/6704619.html 问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表, 有些人习惯在存储过程结束的 ...

  3. SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善

    title: SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善 author: 石沫 背景 SQL Server 作为一种强大的关系型数据库, ...

  4. mysql数据库应用与开发姜桂洪 课后答案_数据库原理及应用(SQL Server 2012) 王丽艳版 课后习题第一至六章答案...

    有很多小伙伴说在网上很难找到这本教材的答案,临近期末复习关头,特将此文章共享到知乎,希望大家考试旗开得胜! 第一章 一.填空题 1.载体 2. 数据库 3.数据库 4.数据库 5.模式 6.例行程序 ...

  5. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...

    在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...

  6. Win7 安装SQL SERVER 2012需要SP1补丁

    在操作系统Win7上安装SQL Server 2012时,报如下错误: 也就是说SQL Server 2012如要要安装在Windows 7 上,则至少需要安装SP1补丁.否则就会弹出上面提示信息.关 ...

  7. SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错

    在window server 2012服务器上,安装 SQL Server 2012的过程中,报了一个错误,一个安装失败, 在安装SQL 2012的过程中.出现下面错误:启用 Windows 功能 N ...

  8. sql数据库服务器端口修改,SQL SERVER 2012更改默认的端口号为1772

    打开开始菜单,找到sqlserver的配置管理器,点击打开 按下图配置右边窗口三项: 按下图配置右边三项: 按下图配置右边三项: 点击下图左边的SQL Server网络配置/MSSQLSERVER的协 ...

  9. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project

    SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...

最新文章

  1. 从协议入手,剖析OAuth2.0(译 RFC 6749)
  2. (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
  3. MySQL分库分表环境下全局ID生成方案
  4. [读书笔记] 深入探索Android热修复技术原理 (手淘技术团队)
  5. Springboot 常见请求方式
  6. cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务
  7. magento 获取 pages/Static Block 内容 Get Pages/Static Block in Magento
  8. virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历
  9. 赛锐信息:SAP 程序优化
  10. java 集群会话管理_架构设计之Spring-Session分布式集群会话管理
  11. 帆软报表登录-某些用户需要用自定义的登陆界面,有些用户用默认登录界面
  12. 保险公司在线签名 html5,html5手写签名
  13. 学习数据库(1)——初始数据库
  14. 万能的应用商店_WiFi万能助手
  15. 开关电源Buck电路CCM和DCM工作模式
  16. 【清华大学】操作系统 陈渝——Part5 虚拟存储概念
  17. 逝去的2018年,年度总结
  18. 常用的curl命令及参数详解
  19. Adobe无法安装错误代码127
  20. 正态性/方差齐性检验及stata实现

热门文章

  1. javascript设计模式之装饰器模式(结构型模式)
  2. 城市视觉技术在智慧城市中的应用
  3. CMOS与MEMS的区别
  4. PHPICP备案查询接口源码
  5. ThinkInJava 中文版-下载
  6. lin总线可以控制几个节点_LIN主从节点设计与实现
  7. 服务器2012r2安装虚拟,Windows Server 2012 R2 安装VMware Tools的正确姿势(实现物理机和虚拟机文件互传)...
  8. mysql5.7安装依赖_MySQL5.7安装
  9. springcloud-es的学习
  10. MKVToolnix Crack