Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Ошибка получения данных из БД


Автор: kurlyak 2.10.2021, 18:49
У меня есть хранимая процедура

Код

ALTER PROCEDURE [dbo].[my_proc1] (@p_name char(50), @p_age int)

AS

BEGIN

insert into Table_1 (name, age) values (@p_name, @p_age);
select * from Table_1;

END


В таком состоянии эта процедура работает но в С++ коде SQLFetch выдает SQL_ERROR

Код

//trying to get values from base
    SQLRETURN res = SQLFetch(sqlStmtHandle);

    if (res == SQL_ERROR)
    {
        cout << "SQL_Fetch error" << endl;
    }


Когда я в хранимую процедуру добавляю SET NOCOUNT ON; то есть процедура теперь выглядит так

Код

ALTER PROCEDURE [dbo].[my_proc1] (@p_name nvarchar(50), @p_age int)

    AS

    BEGIN

    SET NOCOUNT ON; 

    insert into Table_1 (name, age) values (@p_name, @p_age);
    select * from Table_1;
    END


то в этом случае SQLFetch не выдает SQL_ERROR и я могу получить данные из таблицы. Я хотел выяснить почему нужно вставлять в код SET NOCOUNT ON? Почему в одном случае SQLFetch не работает в другом случае SQLFetch работает и выдает данные из таблицы?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)