0

我创建了一个存储过程。在尝试通过 SSIS 执行它时,我遇到了问题。

我的存储过程的定义如下所示:

CREATE PROCEDURE dbo.[procedurename] 
    @startDate DATETIME, 
    @endDate DATETIME, 
    @cumulativeAverage DECIMAL(5,2) OUTPUT
AS
    /*stored procedure body that return a table with 3 columns and assigns value to output variable*/
    RETURN 
GO

我有能力运行这是 SSMS,它工作正常。但是,当我尝试在 SSIS 的执行 SQL 任务中运行它时,它不起作用,并且出现此错误:

错误:0xC002F210 at EXEC at Execute SQL task name。执行 SQL 任务:执行查询EXEC DBO.procedurename ?, ?, ?... ”失败,出现以下错误:多个 OLE DB 操作生成错误。检查每个 OLE DB 状态值...

我的 SSIS 脚本如下。

Result set : Full result set.
SQL source type : direct input.
SQL statement : EXEC dbo.[procedurename] ?, ?, ? OUTPUT

Parameter mappings : variable name- User::startDate, Direction- Input, Data Type- Date, Parameter 
                     Name- 0, Parameter size- -1
                     variable name- User::endDate, Direction- Input, Data Type- Date, Parameter Name- 
                     1, Parameter size- -1
                     variable name- User::cumulativeAverage, Direction- output, Data Type- numeric, 
                     Parameter Name- 2, Parameter size- -1
Result set : Result name- 0, Variable name- User::ResultSet
Variables : Variable name- CumulativeAverage, Scope- package, Datatype- Decimal, Value- 0
            Variable name- EndDate, scope- Package, Datetype- DateTime, Value- 5/03/2021
            Variable name- StartDate, scope- Package, Datetype- DateTime, Value- 12/28/2020
            Variable name- ResultSet, scope- Package, DateType- Object, Value- System.Object
4

1 回答 1

0

正如@billinkc 所指出的,我能够为我找出问题所在。问题是由@cumulativeAverage DECIMAL(5,2) OUTPUT参数引起的。这是因为我无法在 SSIS 中设置变量的精度。虽然,我仍然无法找到设置精度的方法。我将 SP 更改为参数的返回FLOATOUTPUT,将 SSIS 变量配置为FLOAT数据类型除外,现在它工作正常。

于 2021-05-20T12:34:48.587 回答