0

動的SQL文字列を使用して日時値を挿入すると同時に、値がnullになる可能性を処理できる最良の方法は何ですか?

現在のステートメントは、文字列を使用して作成された select ステートメントからテーブルに挿入されます。日時の値はパラメーターに格納され、パラメーターは選択で使用されます。

そのようです:

SET @execsql = 'INSERT INTO ( start_date )
SELECT ( ''' + CAST(start_date as VARCHAR) + ''' + ')'
EXECUTE(@execsql)
4

1 に答える 1

0

あなたがSybaseを実行しているように

Set @execsql = 'Insert Into <table> ( start_date ) Select (' + 
  Case When start_date is null Then
    'Null' 
  Else 
    '''' + Cast(start_date as Varchar) + '''' 
  End + ')'

Execute(@execsql)

トリックを行う必要があります

参照用のSQL Serverの方法は次のとおりです

Declare @sql nvarchar(max), @params navarchar(max)

Set @sql = N'Insert Into Table (start_date) Select (@start_date)'
Set @params = N'@start_date datetime'

Exec sp_executesql @sql, @params, @start_date

明らかに、この場合動的 SQL は必要ありませんが、これはより大きな例の一部であると思います。

動的 SQL に関する質問と同様に、http://www.sommarskog.se/dynamic_sql.htmlを読むことをお勧めします。

于 2012-11-16T10:53:54.483 に答える