关闭

关于sql server临时表的应用

2003人阅读 评论(0) 收藏 举报
关于sql server临时表的应用
<script type="text/javascript"><!-- google_ad_client = "pub-6960829636784292"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "6666CC"; google_color_url = "0000FF"; google_color_text = "6600FF"; //--></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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:370074次
    • 积分:4844
    • 等级:
    • 排名:第5913名
    • 原创:55篇
    • 转载:255篇
    • 译文:0篇
    • 评论:66条
    文章分类
    最新评论
    友情连接