Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在不知道参数数据类型的情况下添加存储过程参数?_Sql Server_Stored Procedures - Fatal编程技术网

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

Sql server 如何在不知道参数数据类型的情况下添加存储过程参数?,sql-server,stored-procedures,Sql Server,Stored Procedures,我正在使用SQL Server,希望使用存储过程更新特定单元格的值。我将使用参数为单元格找到正确的表、列、行和新值。单元格/值在不同时间可以是不同的数据类型。如何在不知道参数的数据类型的情况下创建存储过程参数?使用数据类型 upd: 不需要单元格中的数据类型 DECLARE @a TABLE ( i int, s varchar(100), m money ) INSERT INTO @a VALUES (1,'ss', pi()) DECLARE @v sql_va

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

使用数据类型

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');  

这在其他方面似乎有效,但我需要将“@v1”从单元格转换为数据类型。从INFORMATION_SCHEMA.COLUMNS进行的子查询在CONVERT上不起作用,因为它需要的是数据类型,而不是此子查询结果。有什么建议吗?
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');