创建临时表的语句不能写两次,怎么办?

universe 2003-12-23 04:38:37
我需要按条件生成不同内容但名字相同的临时表
如:
if @login=true
select * into #abcd from syspara where code='01'
else
select * into #abcd from syspara where code='02'

但在创建过程的时候提示#abcd已经存在的错误,过程不能创建

这如何是好
...全文
51 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveSQL 2003-12-24
  • 打赏
  • 举报
回复
你可以先create table #abcd(.......)
然后再写你的语句就可以拉。

if @login=true
insert into #abcd select * from syspara where code='01'
else
insert into #abcd select * from syspara where code='02'
yyecho2008 2003-12-24
  • 打赏
  • 举报
回复
这个应该不得行吧,因为一个库中,没有有相同名字的两个表呀。在不同的库中,才差不多。你不是写错了呀。。。这只是我的看法,请不要介意!!
pbsql 2003-12-23
  • 打赏
  • 举报
回复
不知道SQL SERVER是怎么去检查语法的,select * into #abcd ...是不能写两遍,即使这样写也会报错:
if @a>b
select * into #abcd ...where ...
else
select * into #abcd ...where ...

wzh1215 2003-12-23
  • 打赏
  • 举报
回复
if object_id('tempdb.dbo.#abcd') is not null
drop table #abcd
select * into #abcd from syspara
where code=case @login when 1 then '01' else '02' end
universe 2003-12-23
  • 打赏
  • 举报
回复
要是这样呢
if @login=true
select * into #abcd from syspara where code='01'
else
select * into #abcd from syspara where codext='01'

这句该怎么变呢?
select * into #abcd from syspara
where code=case @login when 1 then '01' else '02' end


universe 2003-12-23
  • 打赏
  • 举报
回复
条件判断的不是表的字段,而是存储过程中的一个变量的值
所以以上方法都不行

sqlserver为什么不让过程中出现两条活以上的创建同一个表的名字的语句呢,这几条语句是单项执行的也不行吗?根据条件可是只有一条才被执行的啊
gmlxf 2003-12-23
  • 打赏
  • 举报
回复
if object_id('temp..#abcd') is not null
drop table #abcd
select * into #abcd from syspara
where code=(case when @login=1 then '01' else '02' end)
qiaolin53 2003-12-23
  • 打赏
  • 举报
回复
赞成zjcxc(邹建)
zjcxc 元老 2003-12-23
  • 打赏
  • 举报
回复
--上面写少了一个单引号
select * into #abcd from syspara
where code=case @login when 1 then '01' else '02' end
zjcxc 元老 2003-12-23
  • 打赏
  • 举报
回复
--还是错,应该是:
select * into #abcd from syspara
where code=case @login when 1 then '01' else '02 end
zjcxc 元老 2003-12-23
  • 打赏
  • 举报
回复
if @login=1 --true是什么? SQL中没有这个
select * into #abcd from syspara where code='01'
else
select * into #abcd from syspara where code='02'
viptiger 2003-12-23
  • 打赏
  • 举报
回复
Drop Table #abcd
if @login=true
select * into #abcd from syspara where code='01'
else
select * into #abcd from syspara where code='02'
shuangyu 2003-12-23
  • 打赏
  • 举报
回复
一个库中的同一用户可能让二个同样名字的表同时存在吗??不可能的
你要解决什么问题呀
要不就对表加一个有规则的后缀呀

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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