将多值参数传递给存储过程

时间:2011-03-10 00:23:16

标签: stored-procedures crystal-reports report

我遇到了将多个参数传递给crystal report存储过程的麻烦。我有一个存储过程,只要工作正常吗?StockNumber参数是单值。 当我尝试将其更改为多值时,会发生以下事情:是否显示消息:“此存储过程无法接受多个值”。或者,如果尝试直接启用过程中的参数以接受多个值,则只关闭应用程序而不会出现任何错误。 据我所知,这是存储过程的限制,而不是水晶报告。 无论如何我需要解决这个问题。我只是不知道如何操纵水晶报表环境中的参数。请讨论。谢谢!

   SELECT 
      "table1"."StockNum"
      , "table1"."StockOnhand"
      , "table1"."StockNumber"
      , "table1"."StockLocation"
      ,"table2"."StockDesc"
      ,"table2"."StockDesc2"
      , "TotalSoldItems"."SoldItems"
    FROM   
      "AAG1"."DB2"."table1" "table1"
    LEFT JOIN
    (
    SELECT 
      SUM ("StockNumAA"."StockNumQuantity") "SoldItems"
      , "StockNumAA"."from"
    FROM    
      "AAG1"."DB2"."StockNumAA" "StockNumAA"
    WHERE  "StockNumAA"."code"='BB' 
      AND "StockNumAA"."StockNumber" = '{?3PartNumber}'
      AND ("StockNumAA"."date">={?1StartDate}
      AND "StockNumAA"."date"<={?2EndDate})
    GROUP BY 
       "StockNumAA"."from"
     ) "TotalSoldItems"
    ON "table1"."StockLocation" = "TotalSoldItems"."from"
    LEFT JOIN 
    "AAG1"."DB2"."table2" "table2"
    ON "table1"."StockNumber" = "table2"."Stocknumber"
    WHERE "table1"."StockNumber" = '{?Stocknumber}'

1 个答案:

答案 0 :(得分:3)

我不是水晶报告专家,但通常在尝试将多值传递给SQL中的存储过程时,接受的方法是将其作为逗号分隔的字符串传递给

 item1, item 2, item 3

然后你只需编写一个可以用逗号分割它们的函数并返回一个集合。

编辑:同样,我对水晶报道一无所知,但我做了一些研究,发现了另一个论坛的摘录。它讨论了如何将多标识符用作逗号分隔的字符串:

  

如果你的多值参数是   键入字符串,你可以把它放在   公式定义的扁平化   参数

{flattened_parameter}: 
Join({?YourMultiValueParameter},",") 
e.g. {?YourMultiValueParameter}[1] = US 
{?YourMultiValueParameter}[2] = Canada 
{?YourMultiValueParameter}[3] = UK 
=> {flattened_parameter} = US, Canada, UK