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子句,因为您不想更新整个表,是吗?