sql - 表变量与临时表

标签 sql sql-server sql-server-2014

declare  @i int = 1
if (@i= 2)
Begin 
    declare @t table (value int)
    insert into @t 
    select 1
    select * from @t
end
else 
    select *from @t  
---------------
declare  @i int = 1
if (@i= 2)
Begin 
    create table #t(value int)
    insert into #t
    select 1
end
else 
    select *from #t 

为什么表变量没有得到无效的对象名称?

最佳答案

T-SQL 中变量的范围不限于 block 。局部变量的范围是声明它的批处理。

有人要求声明仅在 block 内可见的变量,但 Microsoft 拒绝了。这是 link

关于sql - 表变量与临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610648/

相关文章:

sql - 如何递归获取逗号分隔的 CategoryId?

sql-server - Sql Server 中的 varbinary(max) 数据类型问题

sql - 根据 1 列的变化值对记录进行排名

PHP 'smart' 搜索引擎搜索Mysql表的建议

.net - 为什么 OracleDataAdapter.Fill() 很慢?

sql - 如何确保列包含一组值中的一个?

python - QtSql 连接多个数据库

sql - 如何更正此 sql 连接上的相关名称?

mysql - 如何在 phpMyAdmin 中使用 SQL 查询设置具有许多特殊字符的列值?

mysql - SQL 语法在记录之间运行操作?