Sql server 对象名‘#xx’无效

我在程序中执行sql语句,有句创建了一个临时表,执行完成后,再执行一个查询,提示对象名无效‘#xx’无效,请问是什么原因? 这些语句用的是同一个连接对象!

                strSql = "select a.id,autoid ,convert(decimal(30,2),iquantity) as iquantity,convert(decimal(30,2),inum) as iNum, a.Cinvcode,Corufts ,idlsid,iCheckIds, convert(smallint,0) as iOperate into #Ufida_WBBuffers from rdrecords a where 1=0";
                comm.CommandText = strSql;
                comm.ExecuteNonQuery();
                strSql = string.Format("select * from #Ufida_WBBuffers");
                comm.CommandText = strSql;
                comm.ExecuteNonQuery();

如果我把这两句合并再一起去执行是不出错的,

还有,我把这两句放在数据库查询分析器中也是正常执行的。

请问是我没设置某个选项?还是写的语句有问题?请高人指点?

烙印99
浏览 1057回答 12
12回答

qq_花开花谢_0

没找到对象 啊哈哈~ ,说笑了 你干嘛不把 select * from #Ufida_WBBuffers放到第一个sql语句里面呢

www说

第二句,我只是用来测试说明问题的,方法后面还有很多语句用到这个临时表,提示对象名‘#Ufida_WBBuffers’无效!

摇曳的蔷薇

@忽而今夏: 可能是临时表没成功创建,既然其他地方都用 为啥不用视图呢 

有只小跳蛙

@alone__: 哦 说错了,是创建视图 ,其实我怀疑跟#有关系 你试试把#去掉 啊哈哈~

繁星coding

@alone__: 我是跟踪用友U8单据来写的方法,所以没有使用视图

拉风的咖菲猫

上一个语句执行完了,所生成的临时表也就被删除了吧,下一句当然找不到了

暮色呼如

本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft SQL Server 2000 实例断开连接时被删除。

慕雪6442864

你好!   我在方法中创建了一个连接对象,所有的sql语句都使用那一个连接对象,我是跟踪用友U8单据来写的方法,所以有很多像这样的sql语句。我们之前也有这样的项目(也是这样使用临时表),好像没有提示对象名无效这个问题!

慕森王

想在后续会话中使用前次会话中创建的临时表,请使用##全局临时表!

MM们

你好,谢谢你的回答 使用全局临时表,应该可以解决这个错误,但是如果多个用户同时调用一个方法,会不会出现冲突呢! 本地临时表(#)不是当连接关闭时被删除吗?还有一点我们之前的项目,也是同样的语句,但却可以正确执行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server