Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 2005 在存储过程中发送列名和值作为参数_Sql Server 2005_Stored Procedures - Fatal编程技术网

Sql server 2005 在存储过程中发送列名和值作为参数

Sql server 2005 在存储过程中发送列名和值作为参数,sql-server-2005,stored-procedures,Sql Server 2005,Stored Procedures,我想用作为参数传递的列名和列值更新存储过程中的一个条目,我该怎么做。试试这个 IF @COLUMNNAMEVALUEVARCHAR <> '' OR @COLUMNNAMEVALUEVARCHAR is not NULL IF @COLUMNNAMEVALUEFLOAT <> '' OR @COLUMNNAMEVALUEFLOAT is not NULL 如果@COLUMNNAMEVALUEVARCHAR“”或@COLUMNNAMEVALUEVARCHAR不为NU

我想用作为参数传递的列名和列值更新存储过程中的一个条目,我该怎么做。

试试这个

IF @COLUMNNAMEVALUEVARCHAR <> '' OR  @COLUMNNAMEVALUEVARCHAR is not NULL

IF @COLUMNNAMEVALUEFLOAT <> '' OR  @COLUMNNAMEVALUEFLOAT is not NULL
如果@COLUMNNAMEVALUEVARCHAR“”或@COLUMNNAMEVALUEVARCHAR不为NULL
如果@COLUMNNAMEVALUEFLOAT“”或@COLUMNNAMEVALUEFLOAT不为NULL

对于类似的内容,您需要使用动态SQL

差不多

CREATE TABLE #Test(
        ID INT,
        Val VARCHAR(20)
)

INSERT INTO #Test SELECT 1, '2'

SELECT  *
FROM    #Test

DECLARE @ColumnName VARCHAR(MAX),
        @ParamValue VARCHAR(MAX),
        @Lookup INT

SELECT  @ColumnName = 'Val',
        @ParamValue = 'tada',
        @Lookup = 1

DECLARE @SQL VARCHAR(MAX)
SELECT  @SQL = 'UPDATE #Test SET ' + @ColumnName + ' = ''' + @ParamValue + ''' WHERE ID = ' + CAST(@Lookup AS VARCHAR(MAX))
EXEC (@SQL)

SELECT  *
FROM    #Test

DROP TABLE #Test

你能让你的代码更符合我需要记录的内容吗?你也能看到我的update语句有什么问题,可能我不应该对Varchar和Float更新使用相同的语法。至少试着理解代码,如果你有问题,问一下,我们可以解释。如果你理解了代码,至少今天你会学到一些东西。为什么有人想创建一个临时表以及查找变量的用途临时表只是作为一个例子,你应该能够用你在上面的查询[TABLENAME]中使用的表名替换它。使用临时表而不是表变量的原因是表变量在EXEC函数的作用域中不可见。查找的使用只是为了过滤where子句,因为您不想更新整个表,是吗?