挿入SQLステートメントでパラメーターを使用して列名を渡す方法例:
@name='name'
insert into employees (id,@name) values(1,'a')
これは可能ですか?
挿入SQLステートメントでパラメーターを使用して列名を渡す方法例:
@name='name'
insert into employees (id,@name) values(1,'a')
これは可能ですか?
いいえ、アプリケーションで、またはSQL Server自体で動的SQLを使用して、列を含むSQLステートメントを作成する必要はありません。
編集: RE:「動的SQLとは」。アプローチは次のとおりです。
DECLARE @Value nvarchar(100)
DECLARE @InsertString nvarchar(1000)
DECLARE @name sysname
SET @name ='name'
SET @Value = 'a'
SET @InsertString= 'INSERT INTO EMPLOYEES (id,' + @name + ') values(1, @Value)'
EXEC sp_executesql @InsertString, N'@Value nvarchar(100)', @Value
ただし、2つの問題があります。最初の@nameはSQLインジェクションプルーフである必要があります。同じ理由で、@Valueのパラメーターも使用する必要があります。ただし、そのデータ型は事前に指定する必要があります。つまり、すべての列に適しているわけではありません。したがって、リフレクションでは、アプリケーション層でこれを行う方がよいでしょう。(注:SQLインジェクションに関する同じ考慮事項が引き続き適用され、アプリケーションコードで列に正しいタイプのパラメーターを追加する必要があります)