0

パラメータとして渡す列名と列値を使用して、ストアド プロシージャのエントリを更新したいのですが、どうすればよいですか。

4

2 に答える 2

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
于 2012-09-13T04:34:44.667 に答える
0

これで試してください

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

IF @COLUMNNAMEVALUEFLOAT <> '' OR  @COLUMNNAMEVALUEFLOAT is not NULL
于 2012-09-13T04:29:25.690 に答える