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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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