none
sql 中@与@@的区别是什么 RRS feed

  • 问题

  • CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT
    AS
    SELECT 'Title Name' = title
    FROM titles
    WHERE title LIKE @@TITLE
    SELECT @@SUM = SUM(price)
    FROM titles
    WHERE title LIKE @@TITLE

    这里创建变量@@TITLE,@@SUM时为什么要用两个@符号,用一个不可以吗?
    还有就是一个@,@@的区别是什么,什么时候用@,又什么时候用@@?
    看了许多人说前面的是局部的后面的是全局的,那是不是我用了后面的方式定义是不是对所有方法,过程都可见了!
    2009年4月8日 15:13

答案


  • SQL 没有用户定义的全局变量这么一说。 倒是有一些系统定义的全局变量,都是以@@开头的。比如@@VERSION, @@IDENTITY 等等,这些变量都是SQL Server所定义的,用户可以直接拿来用的。一般用户定义的变量都是用一个@来表达,但是TSQL语法不禁止用户用两个@@甚至三个@@@. 但是效果跟一个@完全一样。
    2009年4月8日 15:42
  • @@与@一样,只是个人使用上的习惯而已
    当然,有一些系统提供的全局变量是@@的

    在sql 2008中,已经开始提示不要使用@@这样的变量定义了
    2009年4月8日 20:05
  • @--局部變量,用戶定義
    @@--全局變量,默認為系統定義,如果用戶定義等同於局部變量
    吳熹
    2009年4月9日 7:36
    版主

全部回复


  • SQL 没有用户定义的全局变量这么一说。 倒是有一些系统定义的全局变量,都是以@@开头的。比如@@VERSION, @@IDENTITY 等等,这些变量都是SQL Server所定义的,用户可以直接拿来用的。一般用户定义的变量都是用一个@来表达,但是TSQL语法不禁止用户用两个@@甚至三个@@@. 但是效果跟一个@完全一样。
    2009年4月8日 15:42
  • @@与@一样,只是个人使用上的习惯而已
    当然,有一些系统提供的全局变量是@@的

    在sql 2008中,已经开始提示不要使用@@这样的变量定义了
    2009年4月8日 20:05
  • @名,是用户自定义的局部变量。

    @@名,是标量函数,本身就可以返回值,可以不带参数直接调用。
    ice
    • 已建议为答案 zhi715 2009年4月9日 1:18
    2009年4月9日 1:17
  • @本地
    @@全局
    2009年4月9日 5:40
  • @--局部變量,用戶定義
    @@--全局變量,默認為系統定義,如果用戶定義等同於局部變量
    吳熹
    2009年4月9日 7:36
    版主