说我有这个clr程序 exec [SqlStoredProcedure1]'param1 = 1,param2 = 2,param3 = 3'
并且已将其编码为分成不同的参数
string[] initparam = reportParameters.Split(','); //PARAM STRING
string[] param = null; //PARAM SELECTOR
string[] paramvalues = new string[initparam.Length * 2];
int cursor=0;
for(int i=0; i < initparam.Length; i++)
{
param = initparam[i].Split('=');
for (int j = 0; j < param.Length; j++)
{
paramvalues[cursor] = param[j];
cursor++;
}
}
int counter = 0;
foreach (ConsoleApp2.ReportService2005.ReportParameter rp in
_parameters)
{
for(int i = 0; i < paramvalues.Length; i = i + 2)
{
if (string.Equals(paramvalues[i], rp.Name,
StringComparison.CurrentCultureIgnoreCase))
{
parameters[_parameters.Length - totalParams] = new
ConsoleApp2.ReportExecution2005.ParameterValue();
parameters[_parameters.Length - totalParams].Name =
rp.Name;
parameters[_parameters.Length - totalParams].Value =
paramvalues[i + 1];
}
}
SqlContext.Pipe.Send("names: " + parameters[counter].Name);
SqlContext.Pipe.Send("values: " + parameters[counter].Value);
counter++;
totalParams--;
}
re2005.SetExecutionParameters(parameters, "en-us");
管道输出
Param1
1
Param2
2
Param3
3
然而,在点击.SetExecutionParameters后,我会在SSMS中收到错误。
此报告需要报告的默认值或用户定义值 参数'Param3'。要运行或订阅此报告,您必须 提供参数值。 Microsoft.ReportingServices.Diagnostics.Utilities.ReportParameterValueNotSetException: 此报告需要报告的默认值或用户定义值 参数'Param3'。要运行或订阅此报告,您必须 提供参数值。
我在代码中没有看到任何错误。如果使用只有一个参数的报表抛出代码就可以正常工作了,我不知道为什么在使用多个参数时它不会出现。