Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимая процедура что-то делает и возвращает данные  [new]
Николай МВ
Member

Откуда: Ukraine-Kyiv
Сообщений: 328
Добрый день!

Есть хранимая процедура.
Ее задача: получить данные, сохранить, обработать и вернуть новые.
В упрощенном виде:
alter proc getAnswer
	@indata nvarchar(50)
as
	insert into tmp(tmp_val) values(@indata);
	select  @indata + ' is saved' as answer;


И программа на VBScript, которая ее использует:
...
	set cmd = createObject("ADODB.Command")
	set cmd.activeConnection = cn
	cmd.commandText = "getAnswer"
	cmd.commandType = 4
	cmd.namedParameters = True
	
	set cnp = cmd.createParameter("@indata", 8, adParamInput, len(inPhrase), inPhrase)
	cmd.parameters.append cnp
	set rs = cmd.execute
	
	msgbox rs.fields("answer").value


Вот так:
alter proc getAnswer
	@indata nvarchar(50)
as
	--insert into tmp(tmp_val) values(@indata);
	select  @indata + ' is saved' as answer;
все работает.

А вот так:
alter proc getAnswer
	@indata nvarchar(50)
as
	insert into tmp(tmp_val) values(@indata);
	select  @indata + ' is saved' as answer;
выдает ошибку:ошибка.

Понимаю, что команда вставки каким-то образом портит возвращаемые данные, но как это побороть?
15 янв 13, 14:52    [13772488]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
Николай МВ,

таблица tmp на сервере существует?
15 янв 13, 15:02    [13772567]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SET NOCOUNT ON


В первую строку хп.

ЗЫ. И две инструкции заменить одной с OUTPUT кляузой.
15 янв 13, 15:09    [13772641]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
alter proc getAnswer
	@indata nvarchar(50)
as
set nocount on
15 янв 13, 15:09    [13772646]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Николай МВ
Понимаю, что команда вставки каким-то образом портит возвращаемые данные, но как это побороть?
set nocount on в начало процедуры.
15 янв 13, 15:10    [13772650]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
Николай МВ
Member

Откуда: Ukraine-Kyiv
Сообщений: 328
Спасибо! Получилось.
15 янв 13, 15:19    [13772743]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура что-то делает и возвращает данные  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
А можно еще при эпически грустной невозможности добавить set nocount, листать рекордсеты и искать, искать, искать нужное поле. И даже будет работать. Таким образом есть решения с двух сторон.
15 янв 13, 17:12    [13773638]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить