Текущее время: Ср, июл 23 2025, 11:24

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Хранимая процедура возвращает recordset
СообщениеДобавлено: Вт, мар 20 2007, 13:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Как правильно вызвать процедуру, хранимую в MS SQL и возвращающую recoedset (табличку), из Native SQL?

Можно ли сразу открыть курсор по recordset'у?:

Code:
OPEN dbcur FOR SELECT * FROM
    dbo.TheProcedure :id

или
Code:
DECLARE dbcur CURSOR FOR
  SELECT * FROM
    dbo.TheProcedure :id
OPEN dbcur



При таком вызове возвращается ошибка SQL: Line 1: Incorrect syntax near '@P1'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 20 2007, 14:28 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Процедуру так не вызвать. Спец. команда EXECUTE PROCEDURE есть для ХП.
Т.е. так:
Code:
EXEC SQL.
  EXECUTE PROCEDURE ... (IN ..., OUT ...)
ENDEXEC.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 20 2007, 17:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Пономарев Артем написал:
EXECUTE PROCEDURE ... (IN ..., OUT ...)


Это если результат в параметре OUT.
А если результат возвращается (return)?
И не скаляр, а recordset?

Кстати, можно таблицу в OUT-параметре передать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 20 2007, 19:36 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Нота 44977 про хранимки есть.

Насчет таблиц - не знаю. Структуры точно можно. Думаю и с таблицей получится.

Цитата:
А если результат возвращается (return)?

Думаю проще забить и переделать на out

Также с типами данных проблемы могут быть... И если для Oracle, например, есть табличка соответсвий типов, то для M$ - неа :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 09:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Пономарев Артем написал:
Нота 44977 про хранимки есть.

Нет такой ноты. Цифирку потеряли. Пятизначные ноты лет 10 назад писали.

Цитата:
Думаю проще забить и переделать на out

Вот сижу и думаю, кого бы забить. Хранимки пишу не я и использую не только я.

Цитата:
Также с типами данных проблемы могут быть

Это маловероятно, по-моему. Тем более, что нужный абаповский тип можно найти недолгим перебором, даже если вообще не думать головой.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 09:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Зато нашёл ноту 176792 от 11.09.2000, где говорится, что "The reading-out of record sets is not yet supported at the present time."

Предлагается конструкция
Code:
EXEC SQL PERFORMING form.
    SELECT * FROM $PROC$procedure_name
      WHERE ( :in_parameter1, .. , :in_parametern )
      INTO :out_parameter1, .., out_parameterm
  ENDEXEC.


Неужели в документацию нельзя это перенести за 6 лет?!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 10:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Но как быть, если ХП имеет и IN, и OUT, и RETURN параметры?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB