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

qiuhai1985 2011-02-15 10:39:48
求助,高手过来看看。我在存储过程中需要创建一个临时表temp_xz03,为解决用户并发问题,我创建表的时候
如何加入用户名参数进去。比如:CREATE TABLE [dbo].[temp_xz03],用户名参数我该加在哪?
...全文
227 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧