附近有语法错误','异常,当应用程序设置为运行出现。
在SQL Server Management Studio查询运行良好。但它在应用程序设置为运行时引发异常。
存储过程:
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE dbo.[ USP_GET_MONTH_WISE_PENDING_DETAILS]
@MONTH INT = 4,
@YEAR INT = 2017
AS
BEGIN
SET NOCOUNT ON;
SELECT
P.PbsName, PC.CauseName,
dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.DayFrom) + N'/' + dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.MonthFrom) + N'/' +
dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.YearFrom) + N'থেকে' + dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.DayTo) + N'/' +
dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.MonthTo) + N'/' + dbo.F_CONVERT_ENG_NUMBER_TO_BNG(PCI.YearTo) 'Date',
PCI.Remarks
FROM
Pbs P
INNER JOIN
ProbableConnectionInfo PCI ON PCI.PbsId = P.PbsId
INNER JOIN
ConnectionPendingCause CPC ON PCI.Id = CPC.ProbableConnectionId
INNER JOIN
PendingCause PC ON CPC.PendingCauseId = PC.Id
WHERE
PCI.MONTH = @MONTH AND
YEAR = @YEAR AND
CPC.PendingNumber > 0;
SELECT
dbo.F_CONVERT_ENG_NUMBER_TO_BNG(SUM(IC.Pending)) 'PendingApplication',
dbo.F_CONVERT_ENG_NUMBER_TO_BNG(SUM(IC.loadNeed)) 'AppliedLoadAmount'
FROM
IndustrialConnection IC
INNER JOIN
ProbableConnectionInfo PCI ON IC.ProbableConnectionId = PCI.Id
WHERE
PCI.MONTH = @MONTH AND YEAR = @YEAR
GROUP BY
PCI.PbsId;
SET NOCOUNT OFF;
END;
,这里是哪里出了问题被显示出来:
public static DataTable GetDataByStoredProcedure(string spName, List<SqlParameter> pars = null)
{
sqlConnection.Open();
var sqlCommand = new SqlCommand(spName, sqlConnection);
sqlCommand.CommandType = CommandType.StoredProcedure;
if (pars != null)
{
sqlCommand.Parameters.AddRange(pars.ToArray());
}
var dataReader = sqlCommand.ExecuteReader();
var dt = new DataTable("Command");
dt.Load(dataReader);
//sqlConnection.Close();
return dt;
}
这里是我使用的方法:
public void ShowPendingIndustrialInfo(string exportType, int year, int month)
{
List<SqlParameter> pars = new List<SqlParameter>();
SqlParameter p1 = new SqlParameter("@month", SqlDbType.Int);
p1.Value = month;
SqlParameter p2 = new SqlParameter("@year", SqlDbType.Int);
p2.Value = year;
pars.Add(p1);
pars.Add(p2);
var data = SPService.GetDataByStoredProcedure("USP_GET_MONTH_WISE_PENDING_DETAILS",pars);
ReportHelper.ShowReport(data, exportType, "rptPendingDetails.rpt");
}
我注意到你已经改变了sp的名字。现在它读取为* USP_GET_MONTH_WISE_PENDING_DETAILS *。哪一个是正确的?你可以用调试器检查传递给你的方法的参数的值是什么? – Steve
参数作为“USP_GET_MONTH_WISE_PENDING_DETAILS4,2017”(月,年)传递给我认为正确的方法。但程序没有找到。 @Steve –
如果你的存储过程被命名为USP_GET_MONTH_WISE_PENDING_DETAILS但你通过USP_GET_MONTH_WISE_PENDING_DETAILS,4,2017然后难怪如果数据库找不到名称 – Steve