在SQL编程语言中,一个@和两个@@有什么区别?另外,如何将表放入SSMS数据库的临时表中?
答案 0 :(得分:3)
一种简便的思考方式是,单个@
是局部变量,而@@
是全局变量。局部变量要么使用DECLARE
进行显式声明,要么作为存储过程或函数的参数。
@@
“变量”是全局定义的。
这不是100%准确的。如documentation中所述:
某些Transact-SQL系统函数的名称以2开头 标志(@@)。尽管在早期版本的SQL Server中, @@函数被称为全局变量,它们不是 变量,并且行为与变量不同。的 @@ functions是系统函数,其语法用法遵循 功能规则。
答案 1 :(得分:1)
@@
是Configuration Functions甚至是全局变量。
@
是variable。
此外,如何将表放入SSMS数据库的临时表中?
还不是 SSMS数据库, SSMS (SQL Server Management Studio) 是图形工具。
SSMS是一个集成环境,用于管理从SQL Server到Azure SQL数据库的任何SQL基础结构。 SSMS提供了用于配置,监视和管理SQL实例的工具。使用SSMS可以部署,监视和升级您的应用程序使用的数据层组件,以及构建查询和脚本。
从现有表创建临时表
SELECT * FROM YourTable INTO #TempTable;
答案 2 :(得分:0)
在早期版本的SQL Server中,@
是变量名,而@@
是全局变量。在2008 R2之后,@
是有效的字符标识符。因此,@tempVar
,@@tempVar
@@@tempVar
...都是有效变量。
但是,如果您有一个与@@变量共享相同名称的系统函数,则它将无法编译。示例:
答案 3 :(得分:0)
@和@@之间的差异:
@是一个本地变量,根据其类型和范围保留一些值。 @@全局变量,它引用函数名称。我们在SQL Server中定义了一些系统功能
如何将表放入SSMS数据库的临时表中?
我假设您要将数据从普通表插入到临时表
以下是步骤:
首先创建一个临时表,SQL如下:
---CREATE TEMP TABLE
Create Table #MyTempTable (
EmployeeID int
);
使用SELECT语句从原始表中将数据插入临时表中
----INSERT COMMON DATA
Insert Into #MyTempTable
Select EmployeeID from Employee Where EmployeeID between 1 and 10
有时无需预先定义临时表。它将根据选择结果创建。
Select FieldA...FieldN
into #MyTempTable
from MyTable