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