【发布时间】:2021-05-10 00:50:37
【问题描述】:
我将解释我的问题,我使用 AdventureWorksDW2012 数据库来展示我的目的。我想根据该表中 CurrencyID = 'CNY' 的最大日期更新表
但我收到错误Conversion failed when converting date and/or time from character string. 我知道错误,因为我使用动态 SQL 语句,但我应该将它与游标一起使用..有关此问题的任何帮助
这是我的代码
SET NOCOUNT ON
DECLARE
@AverageRate float
,@CurrencyID NVARCHAR(50)
,@CurrencyDate DATE
,@EndOfDayRate float
,@CurrencyKey float
,@DateKey float
,@MaxDate nvarchar(max)
Declare update_cursor
CURSOR
FOR
(select DISTINCT AverageRate
,CurrencyID
,CurrencyDate
,EndOfDayRate
,CurrencyKey
,DateKey from dbo.NewFactCurrencyRate1 );
OPEN update_cursor
FETCH NEXT FROM update_cursor INTO
@AverageRate
,@CurrencyID
,@CurrencyDate
,@EndOfDayRate
,@CurrencyKey
,@DateKey
WHILE ( @@FETCH_STATUS = 0)
BEGIN
if @CurrencyID = 'CNY'
begin
set @MaxDate = 'select max(CurrencyDate) from dbo.NewFactCurrencyRate1 '
EXEC (@MaxDate)
end
update dbo.NewFactCurrencyRate1
set CurrencyDate = @MaxDate
where CurrencyID = 'CNY'
FETCH NEXT FROM update_cursor INTO
@AverageRate
,@CurrencyID
,@CurrencyDate
,@EndOfDayRate
,@CurrencyKey
,@DateKey
END
CLOSE update_cursor
DEALLOCATE update_cursor
【问题讨论】:
标签: sql sql-server dynamic sql-update