我正在创建一个存储过程,该过程将用作Crystal Report的数据源 .
存储过程采用两个输入参数 - int和逗号分隔的字符串列表
Create procedure sp_AP_YTD_Payments1
@Year as int,
@Companies nvarchar(MAX)
as
-- SP code here
我确实意识到在where子句中使用它之前我必须将字符串列表转换为数组 .
我有两个问题:
-
如何使用exec sp_AP_YTD_Payments1将参数传递给SP?
-
从Crystal Reports中,用户应该如何输入第二个参数?作为逗号分隔列表?
2 回答
我自己找到了答案 .
exec sp_AP_YTD_Payments1 2013,'925,926,TXR'
从Crystal,用户将输入公司参数的逗号限制列表 .
有一种更好的方法来处理第二个参数 . 如果未使用子报表,则可以将报表移动到子报表,在主报表中创建多值参数,并使用Join函数将参数值传递给子报表 . 这将允许您的用户从列表中选择值,而不关心昏迷格式 .
这篇关于存储过程中多值参数的文章可能会有所帮助:http://www.r-tag.com/Pages/MultivalueParametersWithSQLSP.aspx