2016-04-06 6 views
1

動的な値動的テーブル

Craete procedure SelectColumn 
@tableName NVARCHAR(MAX), 
@id int, 
@ColumnName NVARCHAR(MAX) 

as 
begin 
DECLARE @SQLString1 NVARCHAR(MAX) 
SET @SQLString1= 'Select '+ @ColumnName + ' From ' + @TableName +' where id= '[email protected] 
    print @SQLString1 
    EXEC (@SQLString1) 
end 

ショーこのエラー

を実行すると

nvarcharの値を変換するときに変換が失敗しました 'メールの選択 メンバーのid ='からデータ型intへ。

when delete where id= '[email protected] and set 'where id=1'手順が成功しましたが、私はwhere [email protected]を使用する必要があります。

+0

SQLインジェクションが可能に試してみてください。 – lad2025

+0

使用するdbmsにタグを付けます。 (そのコードはANSI SQL準拠のものとはかけ離れています) – jarlh

+0

@jarlh explain please –

答えて

1

このCAST(@id AS VARCHAR)

SET @SQLString1= 'Select '+ @ColumnName + ' From ' + @TableName +' where id= '+CAST(@id AS VARCHAR) 
+0

これは非常にありがとう –