当前位置: 首页 > 面试题库 >

链接变量分配在SQL中如何工作?

申屠森
2023-03-14
问题内容

我正在分析存储过程中的一些旧SQL代码。

Declare @Var1 money, 
    @Var2 money, 
    @Var3 money,

等等…

Select @Var1 = OldValue, 
       @Var2 = @Var1,

等等…

所以我想知道当它们都在同一个select语句中时,这些赋值如何工作。我假设在调用select之后,Var2 = OldValue,但是我想确定。

围绕这种情况有哪些规则?分配是否按照声明的顺序执行?如果是这样,在以下情况下将为Var2分配什么值:

Select @Var2 = @Var1,
       @Var1 = OldValue,

谢谢!


问题答案:
DECLARE @Var1 MONEY = 100, @Var2 MONEY = 50

SELECT @Var1 = @Var2, 
       @Var2 = @Var1

SELECT  @Var1, @Var2

退货

--------------------- ---------------------
50.00                 50.00

因此,在这种情况下,它们以从左到右的顺序执行, 但这 不能依靠!

如果单个SELECT语句中有多个赋值子句,则SQL Server不保证表达式的求值顺序。请注意,只有在分配之间存在引用时,效果才可见。

来源http://msdn.microsoft.com/en-
us/library/ms187953.aspx



 类似资料:
  • 我正在使用改装库,我想从OpenWeatherPi获取天气预报。 我有这个。

  • 问题内容: 仅仅使用Java 8中的新lambda和功能特性,我不确定如何做到这一点。 例如,以下内容有效: 但是以下内容给我语法错误: 有任何想法吗? 问题答案: 您已经忘记了: 运行:

  • 问题内容: 我有一个通过AJAX函数分配的变量。当我做作业时… 在发送之前响应返回给了我一个回音,如何添加回调以防止这种情况发生? 编辑:我要问的澄清。 它仍然返回未定义。我用send send函数在onreadystatechange函数上为变量分配变量,但是当我的代码正在执行时.. send()可以返回之前,response返回未定义状态。如何停止响应下的代码继续运行,直到分配了响应后才发送值

  • 问题内容: Python在一行中实际上分配多个变量的实际步骤是什么? 我过去经常做A [0],A [1] = A [1],A [0]交换,但是最近我在分配链接列表时遇到了一个错误。 变得早于我的预期,所以分配成为 但是,如果我这样做 有用! 我“假设”步骤是 不 那么,这些步骤是什么? 问题答案: Python中有一种叫做“扩展分配”的东西。 长话短说,您可以通过任务扩展迭代。例如,以下代码评估并

  • 问题内容: 我对以下2条SQL有疑问: SQL小提琴在这里 在执行之前,我认为案例部分应该是,它将返回。 但是现在,我想知道为什么第二个SQL会返回1 问题答案: 我将其作为答案发布,因为它来自: 一些人假设除非优先级规则另有规定,否则谓词将从左到右进行评估,并且在可能的情况下会发生短路。换句话说,如果第一个谓词属性类型=’INT’的评估结果为false,则SQL Server将评估第二个谓词CA

  • 问题内容: 我正在使用以下代码: 该值不警报。怎么了 问题答案: 实质上: