存储过程中创建临时表解决用户并发问题

qiuhai1985 2011-02-15 10:39:48
求助,高手过来看看。我在存储过程中需要创建一个临时表temp_xz03,为解决用户并发问题,我创建表的时候
如何加入用户名参数进去。比如:CREATE TABLE [dbo].[temp_xz03],用户名参数我该加在哪?
...全文
167 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qiuhai1985 2011-02-17
[Quote=引用 11 楼 xiao_ai_mei 的回复:]
也要用动态语句。所以还不如用#temp形式的临时表。不会产生并发错误,下面也可以直接调用,不用动态语句

1举2得
[/Quote]恩。我试着看下吧。
回复
Xiao_Ai_Mei 2011-02-17
也要用动态语句。所以还不如用#temp形式的临时表。不会产生并发错误,下面也可以直接调用,不用动态语句

1举2得
回复
打一壶酱油 2011-02-17
CREATE TABLE #temp_xz03

加个 # 就可以解决并发问题了
回复
qiuhai1985 2011-02-17
[Quote=引用 1 楼 xiao_ai_mei 的回复:]
SQL code
你这个不是临时表,是实体表

declare @user varchar(10),@sql varchar(1000)

set @user='xz03'

set @sql='create table temp_'+@user+'(id int)'

exec(@sql)
[/Quote]如果我在该存储过程中还要使用这个带用户名参数的表,该怎么用。
回复
AcHerat 2011-02-17

/**
*把实体表换成临时表,不要DROP语句,建的表结构相同可以用临时表的。
*/
回复
qiuhai1985 2011-02-17
我这个临时表,算不上真正意义上的,其实是个实体表,只不过在存储过程最后会用DROP语句删除。但是碰到用户并发时,这条DROP语句无法执行,导致后面的用户无法继续使用。所以我想看看有什么办法在这个表上加上用户名参数。来解决并发问题。
回复
AcHerat 2011-02-15
建立临时表的语句不要放到动态语句里,直接建立就可以,像上面说的仅本次会话有效,用户与实例断开,临时表自动删除。
回复
rucypli 2011-02-15
直接用#建立临时表 ,仅对当前链接有效
create table #temp(a int)
回复
王向飞 2011-02-15
本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。
回复
dawugui 2011-02-15
[Quote=引用楼主 qiuhai1985 的回复:]
求助,高手过来看看。我在存储过程中需要创建一个临时表temp_xz03,为解决用户并发问题,我创建表的时候
如何加入用户名参数进去。比如:CREATE TABLE [dbo].[temp_xz03],用户名参数我该加在哪?
[/Quote]

如果表名是动态的,需要动态SQL语句.

declare @username as varchar(10)
set @username = 'xz03'

exec('create table temp_' + @username + ' 字段的定义')
回复
王向飞 2011-02-15
没必要,临时表只有你本次会话可见,其他人不会对你产生影响
放心的用吧
回复
Xiao_Ai_Mei 2011-02-15
你这个不是临时表,是实体表

declare @user varchar(10),@sql varchar(1000)

set @user='xz03'

set @sql='create table temp_'+@user+'(id int)'

exec(@sql)
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-02-15 10:39
社区公告
暂无公告