【问题标题】:Change variable type during runtime在运行时更改变量类型
【发布时间】:2012-08-03 08:14:27
【问题描述】:

是否可以在 SQL Server 中更改变量类型?就像你有的时候

DECLARE @a INT;
SET @a = 3

但是稍后您想使用@a 来存储VARCHAR?有没有办法取消声明它,改变它可以存储的数据类型? T-SQL 允许这样做吗?

【问题讨论】:

    标签: sql-server tsql variables declare


    【解决方案1】:
    declare @s sql_variant
    select @s=3
    select @s='hello'
    

    【讨论】:

      【解决方案2】:

      变量名在一个sql批处理中必须是唯一的,一旦声明你不能改变类型。

       Declare @a int
       Set @a=4
       Select @a
      
      Declare @a varchar(10)
      set @a='Sample'
      Select @a
      

      你会收到一个错误

       The variable name '@a' has already been declared. Variable names must be
       unique within a query batch or stored procedure.
      

      但是您可以使用go 来结束一批 Transact-SQL 语句,然后再次声明变量

       Declare @a int
       Set @a=4
       Select @a
       Go
       Declare @a varchar(10)
       set @a='Sample'
       Select @a
      

      否则您可以使用sql_variant 来存储未指定的数据。但是它不能用于文本、ntext 和没有转换的时间戳

      【讨论】:

        猜你喜欢
        • 2020-07-12
        • 2019-05-23
        • 2022-01-12
        • 2011-02-24
        • 1970-01-01
        • 2020-05-15
        • 1970-01-01
        相关资源
        最近更新 更多