gpt4 book ai didi

c# - 存储过程不接受整数参数

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:07 25 4
gpt4 key购买 nike

我一直在使用我们的数据库人员创建的存储过程,他下周正好出城。 SP 曾经工作,但在他离开之前,数据库人员编辑了 SP,导致我的代码抛出服务器错误:“列名或提供的值的数量与表定义不匹配”。他在离开之前声称SP应该主要是相同的,所以我不知道为什么它不再匹配。

这是 C# 代码:

    System.Data.SqlClient.SqlCommand objCmd = new 
System.Data.SqlClient.SqlCommand("dci.webDonorStatistics", objConn);
objCmd.CommandTimeout = 950;
objCmd.CommandType = System.Data.CommandType.StoredProcedure;
objCmd.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@FiscalYear", 2018));
GridView1.DataSource = objCmd.ExecuteReader();
GridView1.DataBind();

这是 SP 的声明:

   ALTER PROCEDURE [dci].[webDonorStatistics] @FiscalYear INT
AS
BEGIN
--DECLARE @FiscalYear INT = 2018

DECLARE
@StartDate DATE = CONVERT(DATE, '01-OCT-' + CONVERT(CHAR(4), @FiscalYear - 1))
, @EndDate DATE = DATEADD(DAY, -1, GETDATE())

IF @EndDate >= CONVERT(DATE, '30-SEP-' + CONVERT(CHAR(4), @FiscalYear))
SELECT @EndDate = CONVERT(DATE, '30-SEP-' + CONVERT(CHAR(4), @FiscalYear))
ELSE
SELECT @EndDate = DATEADD(DAY, -1, CONVERT(DATE, '01-' + DATENAME(MONTH, GETDATE()) + '-' + CONVERT(CHAR(4), YEAR(GETDATE())))) -- End of previous month

IF DATEDIFF(DAY, @StartDate, @EndDate) < 0
SELECT @EndDate = GETDATE()

BEGIN TRY
DROP TABLE #webDonorStatistics
END TRY
BEGIN CATCH
END CATCH

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

第一步是隔离错误。您的错误是从应用程序代码还是数据库代码中抛出的?如果关注3Dave's建议,你得到什么?假设您指向正确的数据库服务器。尝试运行:

EXEC [dci].[webDonorStatistics] 2018

如果上面的调用没有返回任何错误,我会检查应用程序代码。

关于c# - 存储过程不接受整数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51678426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com