OdbcDataReader执行时看不到参数

时间:2019-02-19 16:46:41

标签: c# .net odbc system.data

当尝试执行存储过程using System.Data.Odbc;时,我的应用程序崩溃,因为它找不到参数"@report"

这是我的代码:

DataTable information = new DataTable();
OdbcCommand cmd = new OdbcCommand(@"usp_BS_REPORT_LINE_LIST", _conn);

cmd.CommandType = CommandType.StoredProcedure;

OdbcParameter parameter = new OdbcParameter("@report",OdbcType.VarChar);
parameter.Value = "rep1";
cmd.Parameters.Add(parameter);

_conn.Open();
OdbcDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
    information.Load(dataReader);
}

_conn.Close();

如您所见,我已经声明了参数,如何解决呢?

确切的错误消息:

  

错误[42000] [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server]过程或函数'usp_BS_REPORT_LINE_LIST'期望未提供参数'@report'。

编辑: 根据史蒂夫的要求,该程序

CREATE PROC dbo.usp_BS_REPORT_LINE_LIST 
    @report varchar(128)    -- report to display
AS 

SET NOCOUNT ON

SELECT 
    s.REPORT_SECTION_NAME, l.REPORT_LINE_NAME, l.REPORT_LINE_USER_NAME
FROM
    BS_REPORT r
    INNER JOIN BS_REPORT_SECTION s ON s.BS_REPORT_ID=r.BS_REPORT_ID
    INNER JOIN BS_REPORT_LINE l ON l.BS_REPORT_SECTION_ID=s.BS_REPORT_SECTION_ID
WHERE 
    r.REPORT_NAME=@report
ORDER BY 
    s.BS_REPORT_SECTION_ID, l.REPORT_LINE_NAME

RETURN 0

GO`

1 个答案:

答案 0 :(得分:0)

您是否尝试过更换

OdbcCommand cmd = new OdbcCommand(@"usp_BS_REPORT_LINE_LIST", _conn);

使用

OdbcCommand cmd = new OdbcCommand("{call usp_BS_REPORT_LINE_LIST(?)}", _conn);