如何在不知道参数数据类型的情况下添加存储过程参数?

时间:2018-09-27 06:59:20

标签: sql-server stored-procedures

我正在使用SQL Server,并想使用存储过程更新特定单元格的值。我将使用参数来查找正确的表格,列,行和单元格的新值。单元/值在不同时间可以是不同的数据类型。如何在不知道参数数据类型的情况下创建存储过程参数?

1 个答案:

答案 0 :(得分:1)

使用数据类型sql_variant

DECLARE @v1 sql_variant;  
SET @v1 = 'ABC';  
SELECT @v1;  
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');  
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');  

upd: 不需要来自单元格的数据类型

DECLARE @a TABLE 
(
    i int,
    s varchar(100),
    m money
)
INSERT INTO @a VALUES (1,'ss', pi())

DECLARE @v sql_variant

SELECT @v = i FROM @a
SELECT SQL_VARIANT_PROPERTY(@v, 'BaseType');  

SELECT @v = s FROM @a
SELECT SQL_VARIANT_PROPERTY(@v, 'BaseType');  

SELECT @v = m FROM @a
SELECT SQL_VARIANT_PROPERTY(@v, 'BaseType');