这个SQL字符是什么意思? @和@@之间的区别

时间:2018-10-22 23:23:03

标签: sql sql-server

在SQL编程语言中,一个@和两个@@有什么区别?另外,如何将表放入SSMS数据库的临时表中?

4 个答案:

答案 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 ...都是有效变量。

但是,如果您有一个与@@变量共享相同名称的系统函数,则它将无法编译。示例:

  • @@ IDENTITY
  • @@ ERROR
  • @@ ROWCOUNT
  • @@ TRANCOUNT
  • @@ PACK_RECEIVED
  • @@ PROCID

答案 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