【基本功测试】不要运行,来猜猜运行结果

guguda2008 2014-09-24 01:04:55
不运行光分析语句,下面这段代码会输出什么样的结果?
if 'a'='b'
begin

DECLARE @t TABLE(i int)

insert into @t
select 1

create table #t(j int)
insert into #t
select 2


end

SELECT *
FROM @t

select *
from #t

是男人就别作弊
...全文
171 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hleb231 2014-09-24

变量可以声明在任何地方,管你IF 成不成产
是这个意思吧。
回复
按另外一个贴的结果,我猜 临时表的应该会的报错
回复
hleb231 2014-09-24

声明  不受 IF 语句控制?
回复
hleb231 2014-09-24

根本就不会执行begin 语句块。
回复
Vidor 2014-09-24
@t有效#t无效
回复
释怀355_H 2014-09-24
执行了,没明白为什么只有一个报错
回复
@t 应该会丢失
回复
guguda2008 2014-09-24
引用 2 楼 DBA_Huangzj 的回复:
为了证明猜测,还是执行了一下,结果。。嘿嘿
我为了让人踩坑特意把注释去掉又加了干扰语句,哈哈哈哈
回复
發糞塗牆 2014-09-24
回复
xiaodongni 2014-09-24
是因为表变量和临时表内部存储机制问题?
回复
xiaodongni 2014-09-24
引用 1 楼 DBA_Huangzj 的回复:
纯看代码,if部分不知道,只执行 SELECT * FROM @t select * from #t 这部分 应该会报错两个东西不存在
敢问 这是为啥?
回复
xiaodongni 2014-09-24
我也是觉得报错 不存在
回复
發糞塗牆 2014-09-24
为了证明猜测,还是执行了一下,结果。。嘿嘿
回复
發糞塗牆 2014-09-24
纯看代码,if部分不知道,只执行 SELECT * FROM @t select * from #t 这部分 应该会报错两个东西不存在
回复
发帖
非技术版
创建于2007-09-28

1.1w+

社区成员

MS-SQL Server 非技术版
申请成为版主
帖子事件
创建了帖子
2014-09-24 01:04
社区公告
暂无公告