在存储过程中将列名称和值作为参数发送

时间:2012-09-13 04:26:59

标签: sql-server-2005 stored-procedures

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

2 个答案:

答案 0 :(得分:2)

对于类似的东西,你需要使用动态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

答案 1 :(得分:0)

试试这个

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

IF @COLUMNNAMEVALUEFLOAT <> '' OR  @COLUMNNAMEVALUEFLOAT is not NULL
相关问题