Здравствуйте Lexey, Вы писали:
L>Здравствуйте Serge2, Вы писали:
S>>Привет всем! S>>Имею иметь следующую ситуацию: S>>В программе на VC подключаюсь к MS SQL2000 и S>>вызываю хранимую процедуру. Результат запроса S>>должен сохраняться в Recordset. S>>Если внутри хранимой процедуры используется SELECT ..., то S>>все работает нормально, S>>если сначала идет INSERT ...., а затем идет SELECT ...., S>>то выполняется только INSERT...., и естественно Recorset валится.
L>А ты точно уверен, что выполняется только Insert? Кстати, через что с базой работаешь?
S>>Кстати если, наоборот, сначала SELECT...., затем INSERT..., то все OK. S>>Но дело в том, что мне нужно сделать как раз наоборот внутри одной транзакции. S>>Если кто-то сталкивался с подобной ситуацией, плз, подсажите в чем м.б. причина.
L>Наиболее вероятная причина — любой батч из SQL-предложений генерирует промежуточные результаты (типа числа обновленных записей и т.п.). В твоем случае первым результатом оказывается счетчик строк, вставленных insert'ом, а не результат select. Самый простой способ от этого избавится — вставить в начале процедуры SET NOCOUNT ON.
Огромное всем спасибо. Работаю через ADO. Действительно, дело было в промежуточных
messages. Попробовал в Query Analyzer выполнить процедуру. В результате на вкладке Messages было два сообщения : одно на результаты INSERT, другое на SELECT.
Внутри процедуры поставил SET NOCOUNT ON, в результате все OK.