0

使用动态 sql 字符串插入日期时间值的最佳方法是什么,同时能够处理值为空的可能性?

当前语句从使用字符串构建的 select 语句插入到表中。datetime 值存储在一个参数中,该参数在 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 回答