精华内容
下载资源
问答
  • print @变量 是以文本的方式在消息栏显示...select @变量 是以表的形式在结果栏显示。 PROCEDURE [dbo].[...] ( ... ) AS BEGIN SET NOCOUNT ON DECLARE @access BIT IF EXISTS(...) WHERE ... SET @acc...

    print @变量 是以文本的方式在消息栏显示。

    select @变量 是以表的形式在结果栏显示。

    PROCEDURE [dbo].[...]
        (
            ...
        )
     AS
    BEGIN
    
    SET NOCOUNT ON
        DECLARE @access BIT
        IF EXISTS(...)
        WHERE ...
            SET @access=1
        ELSE
            SET @access=0
        SELECT @access As access
    SET NOCOUNT OFF
    
    END

    返回值access是resultset。

    展开全文
  • SQL 变量

    千次阅读 2019-05-08 19:24:15
    T-SQL语言包括两种形式的变量:用户自己定义的局部变量和系统提供的全局变量。 常规标识符 以ASCII字母、Unicode字母、下划线(_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元...

    变量名是一个合法的标识符。T-SQL语言包括两种形式的变量:用户自己定义的局部变量和系统提供的全局变量。

    常规标识符

    以ASCII字母、Unicode字母、下划线(_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元符号($)、@或#,但不能全为下划线(_)、@或#

     

    分隔标识符

    包含在双引号(”)或者方括号([ ])内的常规标识符或不符合常规标识符规则的标识符。

    局部变量

    局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。局部变量是用于保存特定类型的单个数据值的变量。在T-SQL语言中,局部变量必须先定义然后再使用。

      • 局部变量声明

    在T-SQL语言中,用户可以使用declare语句声明变量,包含局部变量。在声明变量时需要注意如下两个方面:

    为变量指定名称,且名称的第一个字符必须是@

    指定该变量的数据类型和长度。

    默认情况下将该变量值设置为null

    用户还可以在一个declare语句中声明多个变量,多个变量之间使用逗号隔开。

    语法格式如下:

    Declare {@local_variable data_type} [,...n]

    1. @local_variable指定局部变量的名称。
    2. Data_type设置局部变量的数据类型及大小。局部变量可以为除textntext
    3. image类型以外的任何数据类型。
    4. 所有局部变量在声明后均初始化为null,可以使用selectset设定的相应的值。

     

      • 局部变量赋值

    使用set语句为变量赋值和使用select语句选择列表当前所引用值来为变量赋值。语法格式如下:

    set @local_variable = expression

    select {@local_variable = expression}[,...n]

    select 语句通常用于将单个值返回到变量中,若有多个值时,将返回的最后一个值赋给变量

    若无返回行,则变量将保留当前值。

    expression不返回值,则变量设为null

    一个select语句可以初始化多个局部变量。

     

      • 变量显示

    使用print语句为显示变量值,语法格式如下:

    print @local_variable

    此外,select语句也可用于局部变量的查看,格式如下:

    select @local_variable

    全局变量

    全局变量由系统提供且预先声明,是SQL Server系统内部使用的变量,其作用范围并不仅限于某一程序,而是任何程序均可以随时调用,通常存储SQL Server的配置设定值和系统数据。

    全局变量是由系统定义和维护的变量,是用于记录服务器活动状态的一组数据。全局变量名由@@符号开始。用户不能建立全局变量,也不可能使用set语句去修改全局变量的值。用户可以在程序中使用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。全局变量的查看语句同局部变量:select @@variable

     

    全局变量注意事项:

    1. 全局变量不是由用户的程序定义的,而是在服务器级定义的。
    2. 用户只能使用预先定义的全局变量。
    3. 引用全局变量时,必须以标记符“@@”开头。
    4. 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

     

    常用的全局变量

    SQL Server支持的全局变量主要包括以下几个:

    1. @@CONNECTIONS:返回自最近一次启动SQL Server以来连接或视图连接的次数。
    2. @@ERROR:返回最后执行SQL语句的错误代码。
    3. @@ROWCOUNT:返回上一次语句影响的数据行的行数。
    4. @@SERVERNAME:返回运行SQL Server的本地服务器的名称。
    5. @@VERSION:返回SQL Server当前安装的日期、版本和处理器类型。
    6. @@LANGUAGE:返回当前SQL Server服务器的语言。

    如上描述如有不懂,或想学习更多技术知识,可以扫码关注麒琳技术栈公众号,欢迎在线咨询

    展开全文
  • sql中变量用法_SQL变量:基础和用法

    千次阅读 2020-07-26 10:45:52
    sql变量用法 In this article, we will learn the notions and usage details of the SQL variable. In SQL Server, local variables are used to store data during the batch execution period. The local ...

    sql中变量用法

    In this article, we will learn the notions and usage details of the SQL variable. In SQL Server, local variables are used to store data during the batch execution period. The local variables can be created for different data types and can also be assigned values. Additionally, variable assigned values can be changed during the execution period. The life cycle of the variable starts from the point where it is declared and has to end at the end of the batch. On the other hand, If a variable is being used in a stored procedure, the scope of the variable is limited to the current stored procedure. In the next sections, we will reinforce this theoretical information with various examples

    在本文中,我们将学习SQL变量的概念和用法细节。 在SQL Server中,局部变量用于在批处理执行期间存储数据。 可以为不同的数据类型创建局部变量,也可以为其分配值。 此外,可以在执行期间更改变量分配的值。 变量的生命周期从声明它的点开始,并且必须在批处理结束时结束。 另一方面,如果在存储过程中使用了变量,则该变量的范围仅限于当前存储过程。 在下一部分中,我们将通过各种示例来加强这一理论信息

    Note: In this article examples, the sample AdventureWorks database is used.

    注意:在本文示例中,将使用示例AdventureWorks数据库。

    SQL变量声明 (SQL Variable declaration)

    The following syntax defines how to declare a variable:

    以下语法定义了如何声明变量:

    DECLARE { @LOCAL_VARIABLE data_type [ = value ] }
    

    Now, let’s interpret the above syntax.

    现在,让我们解释以上语法。

    Firstly, if we want to use a variable in SQL Server, we have to declare it. The DECLARE statement is used to declare a variable in SQL Server. In the second step, we have to specify the name of the variable. Local variable names have to start with an at (@) sign because this rule is a syntax necessity. Finally, we defined the data type of the variable. The value argument which is indicated in the syntax is an optional parameter that helps to assign an initial value to a variable during the declaration. On the other hand, we can assign or replace the value of the variable on the next steps of the batch. If we don’t make any initial value assigned to a variable, it is initialized as NULL.

    首先,如果要在SQL Server中使用变量,则必须对其进行声明。 DECLARE语句用于在SQL Server中声明变量。 在第二步中,我们必须指定变量的名称。 局部变量名称必须以at(@)符号开头,因为此规则是语法上的必要性。 最后,我们定义了变量的数据类型。 语法中指示的value参数是一个可选参数,有助于在声明期间为变量分配初始值。 另一方面,我们可以在批处理的后续步骤中分配或替换变量的值。 如果我们不给变量赋任何初始值,则将其初始化为NULL。

    The following example will declare a variable whose name will be @VarValue and the data type will be varchar. At the same time, we will assign an initial value which is ‘Save Our Planet’:

    以下示例将声明一个变量,其名称为@VarValue,数据类型为varchar。 同时,我们将分配一个初始值“ Save Our Planet”:

    DECLARE @TestVariable AS VARCHAR(100)='Save Our Planet'
    PRINT @TestVariable
    

    Declaring a SQL variable with initial value

    给SQL变量赋值 (Assigning a value to SQL Variable )

    SQL Server offers two different methods to assign values into variables except for initial value assignment. The first option is to use the SET statement and the second one is to use the SELECT statement. In the following example, we will declare a variable and then assign a value with the help of the SET statement:

    SQL Server提供了两种不同的方法将值分配给变量(初始值分配除外)。 第一种选择是使用SET语句,第二种选择是使用SELECT语句。 在下面的示例中,我们将声明一个变量,然后借助SET语句分配一个值:

    DECLARE @TestVariable AS VARCHAR(100)
    SET @TestVariable = 'One Planet One Life'
    PRINT @TestVariable
    

    Assigning  a value to SQL variable through SET statement

    In the following example, we will use the SELECT statement in order to assign a value to a variable:

    在以下示例中,我们将使用SELECT语句为变量赋值:

    DECLARE @TestVariable AS VARCHAR(100)
    SELECT @TestVariable = 'Save the Nature'
    PRINT @TestVariable
    

    Assigning  a value to SQL Variable through SELECT statement

    Additionally, the SELECT statement can be used to assign a value to a variable from table, view or scalar-valued functions. Now, we will take a glance at this usage concept through the following example:

    此外,SELECT语句可用于为表,视图或标量值函数中的变量分配值。 现在,通过以下示例,我们将大致了解一下这种用法概念:

    DECLARE @PurchaseName AS NVARCHAR(50)
    SELECT @PurchaseName = [Name]
    FROM [Purchasing].[Vendor]
    WHERE BusinessEntityID = 1492
    PRINT @PurchaseName
    

    Assigning  a value to SQL Variable from a table

    As can be seen, the @PurchaseName value has been assigned from the Vendor table.

    可以看出,@ PurchaseName值是从Vendor表分配的。

    Now, we will assign a value to variable from a scalar-valued function:

    现在,我们将为标量值函数的变量赋值:

    DECLARE @StockVal AS INT
    SELECT @StockVal=dbo.ufnGetStock(1)
    SELECT @StockVal AS [VariableVal]
    

    Assigning  a value to SQL Variable from a scalar-valued function

    多个SQL变量 (Multiple SQL Variables )

    For different cases, we may need to declare more than one variable. In fact, we can do this by declaring each variable individually and assigned a value for every parameter:

    对于不同的情况,我们可能需要声明多个变量。 实际上,我们可以通过分别声明每个变量并为每个参数分配一个值来做到这一点:

    DECLARE @Variable1 AS VARCHAR(100)
    DECLARE @Variable2 AS UNIQUEIDENTIFIER
    SET @Variable1 = 'Save Water Save Life'
    SET @Variable2= '6D8446DE-68DA-4169-A2C5-4C0995C00CC1'
    PRINT @Variable1
    PRINT @Variable2
    

    Multiple SQL variables

    This way is tedious and inconvenient. However, we have a more efficient way to declare multiple variables in one statement. We can use the DECLARE statement in the following form so that we can assign values to these variables in one SELECT statement:

    这种方式既乏味又不便。 但是,我们有一种更有效的方法来在一个语句中声明多个变量。 我们可以使用以下形式的DECLARE语句,以便我们可以在一个SELECT语句中为这些变量赋值:

    DECLARE @Variable1 AS VARCHAR(100), @Variable2 AS UNIQUEIDENTIFIER
    SELECT @Variable1 = 'Save Water Save Life' , @Variable2= '6D8446DE-68DA-4169-A2C5-4C0995C00CC1'
    PRINT @Variable1
    PRINT @Variable2
    

    Multiple SQL Variables usage with SELECT statement

    Also, we can use a SELECT statement in order to assign values from tables to multiple variables:

    另外,我们可以使用SELECT语句将表中的值分配给多个变量:

    DECLARE @VarAccountNumber AS NVARCHAR(15)
    ,@VariableName AS NVARCHAR(50)
    SELECT @VarAccountNumber=AccountNumber , @VariableName=Name
    FROM [Purchasing].[Vendor]
    WHERE BusinessEntityID = 1492
    PRINT @VarAccountNumber
    PRINT @VariableName
    

    Multiple SQL  variable usage

    有关SQL变量的有用提示 (Useful tips about the SQL Variables )

    Tip 1: As we mentioned before, the local variable scope expires at the end of the batch. Now, we will analyze the following example of this issue:

    提示1:如前所述,局部变量作用域在批处理结束时到期。 现在,我们将分析此问题的以下示例:

    DECLARE @TestVariable AS VARCHAR(100)
    SET @TestVariable = 'Think Green'
    GO
    PRINT @TestVariable
    

    SQL variable scope problem

    The above script generated an error because of the GO statement. GO statement determines the end of the batch in SQL Server thus @TestVariable lifecycle ends with GO statement line. The variable which is declared above the GO statement line can not be accessed under the GO statement. However, we can overcome this issue by carrying the variable value with the help of the temporary tables:

    上面的脚本由于GO语句而产生错误。 GO语句确定SQL Server中批处理的结束,因此@TestVariable生命周期以GO语句行结束。 在GO语句行上方声明的变量不能在GO语句下访问。 但是,我们可以通过在临时表的帮助下携带变量值来克服此问题:

    IF OBJECT_ID('tempdb..#TempTbl') IS NOT NULL DROP TABLE #TempTbl
    DECLARE @TestVariable AS VARCHAR(100)
    SET @TestVariable = 'Hello World'
    SELECT @TestVariable AS VarVal INTO #TempTbl
    GO
    DECLARE @TestVariable AS VARCHAR(100)
    SELECT @TestVariable = VarVal FROM #TempTbl
    PRINT @TestVariable
    

    SQL variable usage in the diffrent scopes

    Tip 2: Assume that, we assigned a value from table to a variable and the result set of the SELECT statement returns more than one row. The main issue at this point will be which row value is assigned to the variable. In this circumstance, the assigned value to the variable will be the last row of the resultset. In the following example, the last row of the resultset will be assigned to the variable:

    技巧2:假设我们将表中的值分配给变量,并且SELECT语句的结果集返回多行。 此时的主要问题是将哪个行值分配给变量。 在这种情况下,为变量分配的值将是结果集的最后一行。 在以下示例中,结果集的最后一行将分配给变量:

    SELECT AccountNumber 
    FROM [Purchasing].[Vendor]
    ORDER BY BusinessEntityID 
            
    DECLARE @VarAccountNumber AS NVARCHAR(15)
    SELECT @VarAccountNumber=AccountNumber 
    FROM [Purchasing].[Vendor]
    order by BusinessEntityID 
    SELECT @VarAccountNumber AS VarValue
    

    Value assignment to SQL variable from a table which has multiple rows

    Tip 3: If the variable declared data types and assigned value data types are not matched, SQL Server makes an implicit conversion in the value assignment process, if it is possible. The lower precedence data type is converted to the higher precedence data type by the SQL Server but this operation may lead to data loss. For the following example, we will assign a float value to the variable but this variable data type has declared as an integer:

    技巧3:如果变量声明的数据类型和赋值的数据类型不匹配,则SQL Server会在值分配过程中进行隐式转换(如果可能)。 SQL Server将较低优先级数据类型转换为较高优先级数据类型,但是此操作可能会导致数据丢失。 对于以下示例,我们将为该变量分配一个浮点值,但是此变量数据类型已声明为整数:

    DECLARE @FloatVar AS FLOAT = 12312.1232
    DECLARE @IntVar AS INT
    SET @IntVar=@FloatVar
    PRINT  @IntVar
    

    SQL variable implicit conversion

    结论 (Conclusion)

    In this article, we have explored the concept of SQL variables from different perspectives, and we also learned how to define a variable and how to assign a value(s) to it.

    在本文中,我们从不同的角度探讨了SQL变量的概念,并且还学习了如何定义变量以及如何为其分配值。

    翻译自: https://www.sqlshack.com/sql-variables-basics-and-usage/

    sql中变量用法

    展开全文
  • SQL Server推荐使用 SET 而不是 SELECT变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。下表列出 SET 与 SELECT 的区别。请特别注意红色部分。   set select 同时对多个变量...
  • MS SQLselect top 后跟变量

    千次阅读 2015-07-14 11:10:39
    SQL2005 中selecdt top后是可以直接跟变量的比如:(但要...在SQL2000中,Select Top后是不能直接跟变量的: 要解决2000中top后跟变量的方法有两种: 第一种: declare @i int,@sql varchar(100) set @i = 100 set

    SQL2005 中selecdt top后是可以直接跟变量的比如:(但要注意的是变量要用括号括起来)

    select top (@i )* from table

    在SQL2000中,Select Top后是不能直接跟变量的:

    要解决2000中top后跟变量的方法有两种:
    第一种: declare @i int,@sql varchar(100)
    set @i = 100
    set @sql = 'select top ' + cast(@i as varchar) + ' * from table'
    exec(@sql)

    通常我们可以使用这种方法来操作,但有时却不行,比如循环读取记录时(以下这么写会出错)

        declare @i int,@sql varchar(100)
        set @i = 100
        set @sql = 'select top ' + cast(@i as varchar) + ' * from table'
        DECLARE rs CURSOR   LOCAL SCROLL FOR
        --设置数据源
        exec(@sql)  
        OPEN rs

    第二种:使用set rowcount = 100来实现

        set rowcount 100      --设置读取的条数
        DECLARE rs CURSOR   LOCAL SCROLL FOR
        --设置数据源
        select * from table
        OPEN rs

        set rowcount 0        --恢复读取的条数
    展开全文
  • 变量的声明: oracle的变量必须在在declare部分声明——意思是必须建立begin end块,块结构也强制...sqlserver的变量可以在过程的任何部分声明——sqlserver有且只有一个作用域,但只有声明后的部分才可以使用变量
  • 在动态SQL中,存在着多种对字符变量赋值的方法.其中set和select使用的朋友最多.对于像我一样的小鸟来说,可能只是会用这两个方法而已,并没有真正理解这两个方法的真正内涵.我个人的理解是这样的:set只是对字符变量的一...
  • sql变量使用总结

    千次阅读 2017-04-27 09:34:21
    使用select定义用户变量的实践 将如下语句改成select的形式:  set @VAR=(select sum(amount) from penalties); 我的修改:  select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的。但是,...
  • SQL 变量定义 变量赋值 变量显示

    万次阅读 2008-07-08 14:48:00
    declare @a int set @a=(select count(*) from users)print @a declare @a int //变量定义set @a=(select count(*) from users); //变量赋值print @a //变量显示
  • 我现在利用SQL server链接了一个mysql数据库。 在写一个语句时,遇到困难,请指点一下,语句如下: SELECT * FROM OPENQUERY(MYSQL, 'select * from table ' )  select a,b,c=(SELECT * FROM ...
  • PROC基础知识之SQL变量

    千次阅读 2010-04-05 19:47:00
    SELECT或者FETCH语句的INTO子句所引用的变量叫输出SQL变量,因为ORACLE把从数据库表列中选择的值存放到这类变量中。而在其它SQL语句(INSERT,UPDATE….)中所包含的变量都叫输入SQL变量,ORACLE把输入SQL变量中的...
  • SQL局部变量

    千次阅读 2017-02-24 16:16:31
    1.局部变量的定义: DECLARE 局部变量名 数据类型 【后面可以用逗号连接n个】 局部变量名必须是以@开头,要符合标识符的命名规则。 2.局部变量的赋值: ...3.变量值的输出,用PRINT或SELECT语句输出变量的值。 PRIN
  • mybatis中使用sql变量

    千次阅读 2019-09-27 19:00:39
    mybatis中使用sql变量需求背景问题一问题二 需求背景 在一个这样的业务中,需要查询一个表A的记录,其中A表的主要字段有 id , createtime ,amount ,现在要求给定一个数字N,查询按照创建时间顺序排列之后的前 x条...
  • SQL SERVER 变量赋值

    千次阅读 2019-08-04 17:50:54
    SQL Server中变量赋值的方式有两种,分别是SET和SELECT。 两种赋值方式的区别如下: set select 同时对多个变量赋值 不支持 支持 表达式返回多个值 不支持 将返回的最后一个值赋给变量 ...
  • select top 变量

    千次阅读 2008-06-06 16:45:00
    declare @PageSize int set @PageSize = 10 ---select top @PageSize * from Products----尽然发现 select top 变量 的方式是用不上了.于是上网一查果然是这样.有没有什么方法可以代替了.----发现还是有的.就是用...
  • SQL中将select结果赋值给变量

    千次阅读 2014-12-08 14:49:11
    今天给个任务,要求统计一张表中的行数,如果大于1000就执行某操作,但baidu了一上午没找到满意的答案,后来仔细研究select的用法,得到种自认为比较好的方法和大家分享,剩下的就只剩if了 SELECT count(1) into V_...
  • set hivevar:test1= 793; set hivevar:test2= '793'; select ${test1} ; select ${test2} ;
  • sqlselect结果赋值给变量

    千次阅读 2019-04-03 16:17:01
    使用navicat建了个查询 不知道为啥写的sql一直报错,问了一下实验室大佬 select @auu := uuid as auu from m_activity where activity_id=12; :=是赋值
  • Oracle PL/SQL变量声明

    千次阅读 2016-08-18 13:16:47
    Oracle培训教程:PL/SQL变量声明,PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明...
  • PL/SQL 变量赋值

    万次阅读 2012-08-08 23:29:58
    2.6 变量赋值 ... variable 是一个PL/SQL变量, expression 是一个PL/SQL 表达式. 2.6.1  字符及数字运算特点 空值加数字仍是空值:NULL + = NULL 空值加(连接)字符,结果为字符:NULL ||
  • 在 TOP 中使用变量以下示例使用变量获得 AdventureWorks 数据库的 dbo.Employee 表中列出的前 10 个雇员。...SELECT TOP(@p)* FROM HumanResources.Employee; GO只要将变量放到圆括号内,则没有任何问题!
  • SQL变量的使用

    千次阅读 2012-11-10 22:27:38
    -一、在T—Sql中使用变量 --(一)局部变量 --1声明变量 @age和@name    declare @age int  declare @name nvarchar(50) --2赋值 ----(1)方法1  set @age=20  set @name='ll'  print @age  ...
  • pl/sql 变量的声明与赋值

    千次阅读 2018-10-28 12:53:15
    pl/sql 是一种强类型的编程语言,所有的变量必须声明后再使用 ,要求在DECLARE部分进行声明 变量名称规定: 变量名称可以有字母,数字 _ $ #等组成 所有的变量名称要求以字母开头,不能是oral中的保留字 变量长度小于30个...
  • Oracle 之PL/SQL 变量与常量

    千次阅读 2018-05-05 00:41:12
    一:常量与变量 数据类型: 常用标准类型:CHAR(CHARATER,NCHAR),VARCHAR2,NUMBER(P,S),DATE,BOOLEAN等。 属性类型:%TYPE 与 %ROWTYPE %TYPE:可以用来定义数据变量的类型与已定义的数据变量(表中的列)一致。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 336,384
精华内容 134,553
关键字:

selectsql变量