现在的位置: 首页 > 综合 > 正文

存储过程中表名作为参数时,临时表的检索

2018年02月12日 ⁄ 综合 ⁄ 共 757字 ⁄ 字号 评论关闭

存储过程中表名作为参数时的操作
表名作为参数在存储过程中使用时,只能通过拼语句来实现
有个表名参数 @TmpTabName varchar(100)
创建该表
set @sql = 'create Table '+@TmpTabName+'( AllStnCount decimal(8,2), OnLineCount decimal(8,2), OnLineRate  decimal(8,2))';
print(@sql);
exec(@sql);
向表中插入数据 values值只能转换成字符串插入
set @sql = 'insert into ' + @TmpTabName + ' values ('''+convert(varchar,@AllCount)+''',''' +convert(varchar,@OnLineCount)+''','''+convert(varchar, @OnLineCount/@AllCount*100) + ''')';
print(@sql);
exec(@sql);

局部临时表和全局临时表都在tempdb数据库中有记录
一般的表在master中有记录
查找临时表
select * from tempdb..sysobjects where id=object_id('tempdb..##TempTable')
查找一般表
SELECT name FROM sysobjects WHERE  name = 'Table1' AND   type = 'U'
#TempTable:局部临时表:只存在当前会话中,会话:应用程序中执行一次sql操作,本次会话结束后局部临时表自动删除
##TempTable:全局临时表:只要创建该全局临时表的连接没有断开,其他的连接都可以使用创建的全局临时表,创建该全局临时表的连接断开时临时表自动删除
exec(@sql) 相当于重新建立一个数据库对话

抱歉!评论已关闭.