OdbcDataReader не может видеть параметры при выполнении - PullRequest
0 голосов
/ 19 февраля 2019

При попытке выполнить хранимую процедуру 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] [Драйвер ODBC 13 для SQL Server] [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 голосов
/ 19 февраля 2019

Вы пробовали заменить

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

на

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