关于sql server临时表的应用

关于sql server临时表的应用
<script type="text/javascript"> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>


大家看我下面的存储过程,有兴趣一起讨论一下:

CREATE PROCEDURE dbo.Pub_GetPageData
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) -- 需要返回的列
as
declare @strSQL nvarchar(4000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

Set @strSQL = 'select IDENTITY(int, 1,1) AS ID_Num,* into #MyTempTable from emp_vBasicinfobrowse order by nid asc'

exec @strSql

select * from #MyTempTable
GO

如果写成上面的那样,调用是提示 找不到 #MyTempTable

CREATE PROCEDURE dbo.qq
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) -- 需要返回的列
as
declare @strSQL nvarchar(4000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

--Set @strSQL = 'select IDENTITY(int, 1,1) AS ID_Num,* into #MyTempTable from emp_vBasicinfobrowse order by nid asc'

--exec @strSql
select IDENTITY(int, 1,1) AS ID_Num,* into #MyTempTable from emp_vBasicinfobrowse order by nid asc
select * from #MyTempTable
GO

写成上面这样就ok,请问各位碰到这样的情况没,是怎么做的,希望能得到你的帮助,在线等。。。。



要么使用你第二种方法,要么像下面改一下第一种

CREATE PROCEDURE dbo.Pub_GetPageData
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) -- 需要返回的列
as
declare @strSQL nvarchar(4000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

Set @strSQL = 'select IDENTITY(int, 1,1) AS ID_Num,* into #MyTempTable from emp_vBasicinfobrowse order by nid asc'

exec @strSql + ' select * from #MyTempTable'

GO



最后一句应该带()

exec (@strSql + ' select * from #MyTempTable')



我试了下楼主说的情况,在执行动态SQL语句中有领时表时,提示找不到该对象!





我也想知道原因,楼上说的是可以执行成功的!
退出来怎么就不可了呢?



动态语句创建的临时表,在执行完后系统就自动清除了,
可以在exec语句中创建,并select



declare @num int, @sql nvarchar(4000), @tbName varchar(100)
set @tbName='tb'

set @sql='select @a=count(*) from dbo.sysobjects where id = object_id(N''[dbo].[' + @tbName + ']'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1'
exec sp_executesql @sql,N'@a int output',@num output

if @num=1
print '存在表'
else
print '不存在'





CREATE PROCEDURE dbo.Pub_GetPageData
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) -- 需要返回的列
as
declare @strSQL nvarchar(4000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

Set @strSQL = 'select IDENTITY(int, 1,1) AS ID_Num,* into #MyTempTable from emp_vBasicinfobrowse order by nid asc'

Set @strSql = @strSql + ' select * from #MyTempTable'
exec @strSql

GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值