Текущее время: Вс, июл 20 2025, 00:45

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 16:03 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 29 2011, 15:55
Сообщения: 91
Пол: Мужской
Доброго всем дня
Осваиваю динамический SQL. По образу и подобию к справке, написал код:
Code:
REPORT  Z_TEST.

DATA:
  lt_tab TYPE ztrecn_ext-recnnrext.

EXEC SQL PERFORMING proc1.
  SELECT recnnrext FROM ztrecn_ext INTO :lt_tab
ENDEXEC.

FORM proc1.
  WRITE / lt_tab.
ENDFORM.


При выполнении выходит ошибка "Объект не найден в БД". При двойном щелчке по ztrecn_ext в запросе пишет, что нет такой таблицы (таблица есть).
В справке приведен следующий пример:
Code:
DATA wa TYPE spfli-carrid.

EXEC SQL PERFORMING evaluate.
  SELECT carrid FROM spfli INTO :wa
ENDEXEC.

FORM evaluate.
  WRITE / wa.
ENDFORM.


Вопрос 1: что я делаю не так?
Вопрос 2: возможно ли выполнение SQL-запроса, текст которого помещен в переменную?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 17:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Это не динамический SQL, это - NativeSQL (обращение к СУБД мимо SAP OpenSQL).
Динамический SQL - смотрите хелп к select, например
Цитата:
WHERE - (cond_syntax)
Syntax
... (cond_syntax) ...

Effect
A logical expression can be specified as a parenthesized data object cond_syntax that contains the syntax of a logical expression or is initial when the statement is executed. It has been possible since SAP Web AS 6.40 to specify all logical expressions dynamically, with the exception of the evaluation of a subquery.


_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 17:24 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
EXEC SQL это не динамический, это Native SQL для конкретной СУБД
естественно, что объекты словаря такой запрос не использует
это решение для крайних случаев, когда по другому никак

в хелпе есть подробный пример SELECT, Dynamic Token Specification


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 17:38 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 29 2011, 15:55
Сообщения: 91
Пол: Мужской
MantiCore1977 написал:
EXEC SQL это не динамический, это Native SQL для конкретной СУБД
естественно, что объекты словаря такой запрос не использует

Как же быть с примером из хелпа? Ведь spfli - это скорее саповая таблица, а не таблица БД.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 17:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Пример из хелпа вполне корректен. SPFLI - прозрачная таблица. Прозрачная таблица - это такая таблица, которая имеется и в словаре и в СУБД, при этом имеет одинаковую структуру. Почитайте курсы BC400, BC402, BC405, благо, что они уже даже на русском есть

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Ср, май 23 2012, 20:35 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
swd написал:
Вопрос 2: возможно ли выполнение SQL-запроса, текст которого помещен в переменную?

Двойная группировка в АБАП


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Вт, май 29 2012, 12:16 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Добрый день. Мы читаем из Oracle вот таким способом:
Code:
DATA dbs TYPE dbcon-con_name VALUE 'название соединения'. 
(связь у нас делал базис)


      EXEC SQL.
        CONNECT TO :dbs
      ENDEXEC.

* открытие курсора для выборки данных из zpp_weight_prokat (Oracle)*
  EXEC SQL.
    OPEN dbcur FOR
   SELECT ****  FROM ****
    WHERE *** = :**** and  …
         
  ENDEXEC.

  DO.
    EXEC SQL.
      FETCH  next dbcur INTO :w1.
* w1-строка таблицы:названия полей должны совпадать и в нужном порядке.
    ENDEXEC.
*------------------------------------------------------------------*
* вставка данных во внутр табл (SAP)      *
    IF sy-subrc = 0.
      MOVE-CORRESPONDING w1 TO tab1.
      APPEND tab1.
    ELSE.
      EXIT.
    ENDIF.
  ENDDO.

* закрытие курсора для выборки данных из Oracle) *
  EXEC SQL.
    close dbcur
  ENDEXEC.

************************************************************
Работаем с SAP таблицей.
Может программа выпасть в дамп, если нет соединения. Желательно его обработать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL
СообщениеДобавлено: Вт, май 29 2012, 14:26 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
В FROM для Native SQL надо указывать схему.

select bukrs
from sapsr3.t001
into :lv_bukrs
where mandt = :sy-mandt
and bukrs = :p_bukrs


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

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


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

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


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

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