使用输出参数时执行 SQL 任务时出错

Error with execute SQL task when using output parameter

我想从 SQL 服务器 table 检索最新日期。

在“执行 SQL 任务”中,我有以下 SQL 语句:

SELECT ? = MAX(MYDATE) --SQL data type of this column is datetime
FROM TBLLOG
WHERE COMPLETED = 1

在参数映射部分我添加了 1 个输出参数:

“执行 SQL”任务中的 ResultSet 属性 设置为 None。

我在执行包时遇到这个错误:

... failed with the following error:
Error HRESULT E_FAIL has been returned from a call to a COM component.
Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

你应该做如下的事情:

DECLARE @ExString NVARCHAR(500) 
SET @ExString = N'SELECT MAX([MYDATE]) AS MaxOfDate FROM TBLLOG
WHERE COMPLETED = 1 '
EXECUTE(@ExString)

这是一个数据类型问题。

基于SQL Server official documentation,SSIS中的DT_DBTIMESTAMP数据类型映射到SQL服务器中的datetimesmalldatetime数据类型。而 DT_DATE 未映射到任何数据类型。

要解决此问题,只需将输出参数的数据类型从DATE更改为DBTIMESTAMP。此外,确保 User:var_testdt 变量也是 DateTime.