Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Получить значение возвращаемое ХП (число прочтений - 5150 )
sour
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 30. Ноября 2006
Получить значение возвращаемое ХП
30. Ноября 2006 :: 06:25
Печать  
Есть хранимая процедура, например MySP. Она возвращает некоторое значение с помощью RETURN, например, RETURN 101.

Как мне методами ODBCRecordSet получить значение, которое вернула моя ХП.
Делаю так:

sSQL = Шаблон("EXEC MySP"); 
чРезультат = RS.ВыполнитьСкалярный(sSQL); //Получаю чРезультат = 0

Код ХП MySP      
CREATE PROCEDURE MySP
AS
BEGIN
  RETURN 101
END      

Как полчить то, что возвращает ХП?
  
Наверх
 
IP записан
 
sour
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 30. Ноября 2006
Re: Получить значение возвращаемое ХП
Ответ #1 - 30. Ноября 2006 :: 09:24
Печать  
В строке sSQL = Шаблон("EXEC MySP");  функция шаблон не нужна. Ошибся при копировании. Т.е. sSQL = "EXEC MySP".

Как все-таки можно полуить значение, возвращаемое хранимой процедурой.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #2 - 30. Ноября 2006 :: 11:18
Печать  
наверное всё же
чРезультат = RS.ВыполнитьСкалярный("SELECT MySP");
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #3 - 30. Ноября 2006 :: 12:00
Печать  
Код
Выбрать все
declare @ret int
exec @ret = MySP
select @ret 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #4 - 30. Ноября 2006 :: 23:04
Печать  
Код
Выбрать все
RS.ДобПараметр(2,4,4,0);
RS.Подготовить("{? = call MySP()}");
RS.ВыполнитьИнструкцию();
чРезультат = RS.ПолучПараметр(1); 

  
Наверх
ICQ  
IP записан
 
Antares
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 30. Ноября 2006
Re: Получить значение возвращаемое ХП
Ответ #5 - 01. Декабря 2006 :: 15:01
Печать  
Попробуй так:

rs.RPCMode(1);
my_num=rs.ВыполнитьИнтсрукцию("EXEC MySP");

...попробуй еще вот так:

CREATE PROCEDURE MySP
     @@RetNum OUTPUT
AS
BEGIN
   select @@RetNum=101
END       
--------------------------------------
Перем ВыхНом;
ВыхНом=0;
rs.УстановитьТекстовыйПараметр("Param",ВыхНом);
rs.Выполнить("EXEC MySP :Param");
  
Наверх
 
IP записан
 
HeiHeShang
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 101
Зарегистрирован: 01. Августа 2006
Re: Получить значение возвращаемое ХП
Ответ #6 - 19. Декабря 2006 :: 14:43
Печать  
Пытаюсь вызвать временую процедуру, добавляю параметры

Рекордсет.ДобПараметр(1,14,9,0);
Рекордсет.ДобПараметр(2,11,15,2);

Рекордсет.Подготовить("call #GetGoodsData(?,?)");
Рекордсет.ВыполнитьИнструкцию();

и получаю ошибку, почему то на сервер посылается следующая команда

declare @P1 int
set @P1=NULL
declare @P2 numeric(15,2)
set @P2=NULL
exec sp_prepexec @P1 output, N'@P1 char(9),@P2 numeric(15,2) OUTPUT', N'call #GetGoodsData(@P1,

непонятно почему первый параметр добавляется как int, если я его описал как CHAR и почему обрезается , куда деется второй параметр при вызове процедуры.
Что я делаю не так ?
  
Наверх
 
IP записан
 
HeiHeShang
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 101
Зарегистрирован: 01. Августа 2006
Re: Получить значение возвращаемое ХП
Ответ #7 - 19. Декабря 2006 :: 14:46
Печать  
надо вызов процедуры заключать в {}
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #8 - 19. Декабря 2006 :: 14:56
Печать  
HeiHeShang писал(а) 19. Декабря 2006 :: 14:46:
надо вызов процедуры заключать в {}

А теперь прочитай ответ ДмитрО выше Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #9 - 25. Декабря 2006 :: 20:18
Печать  
А как обработать результат селекта, возвращенного ХП?
Конкретно мне надо:
1. Наложить условие на 'EXEC sp_helpindex SC33'. Хочу на клиенте получить индексы согласно условию по маске имени.
2. Хочу эээ... приджойнить результат с 'SELECT * FROM INFORMATION_SCHEMA.TABLES' чтобы получить индексы только определенных таблиц.

И все это без использования временной таблицы. Реально?

Хотя с такими вопросами наверное пора на sql.ru.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #10 - 26. Декабря 2006 :: 05:31
Печать  
В системных таблицах все есть:
sysobjects
sysindexes
sysindexkeys
syscolumns
В BOL есть их описание.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #11 - 26. Декабря 2006 :: 10:03
Печать  
Спасибо, уже наваял! Улыбка
  
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Получить значение возвращаемое ХП
Ответ #12 - 26. Октября 2007 :: 10:09
Печать  
Arta писал(а) 25. Декабря 2006 :: 20:18:
А как обработать результат селекта, возвращенного ХП?

А я вот мучаюсь, как вообще получить из хранимки селект (набор строк)...
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать