SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Скрыть нулевые записи


Goto page Previous  1, 2
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
alezhu
Специалист
Специалист



Joined: 29 Apr 2012
Posts: 86
Location: Spb

PostPosted: Thu Sep 27, 2012 3:39 pm    Post subject: Reply with quote

ghost wrote:
1) с каких пор UP TO N ROWS используется вне цикла ( без ENDSELECT) Confused
2) select single не всегда хорош , в частности когда явно полный ключ нельзя указать
3) count тут вообще не причем. имелось ввиду такая конструкция необходима например для проверки есть ли вообще запись по указанному ключу либо выбрать первую найденную запись (но опять опять же когда нет возможности указать полный ключ)

1. А что мешает?
2. Я тут как раз с месяц назад искал +и - select single против up to 1 rows. Где-то попадались ответы, про полный ключ. Тут это кстати тоже обсуждалось. Но в итоге выяснилось, что драйвер к БД (Oracle во всяком случае) генерирует один и тот же запрос для всех случаев. Единственное отличие, в случае с select single если в условии полный первичный ключ, то к запросу не добавляется "AND ROWNUM <= 1", поскольку это излишне (возможно также будет с уникальными индексами - не проверял).
Можете сами убедиться, включив трассировку и запустив такую программу:

Code:

REPORT  ztest_ss_vs_sut1r.

TABLES: mara.

DATA lt_mara TYPE TABLE OF mara.

"Primary key
DO 3 TIMES.
  SELECT SINGLE matnr FROM mara INTO mara-matnr WHERE matnr = '1'.
  SELECT matnr FROM mara UP TO 1 ROWS INTO mara-matnr WHERE matnr = '1'. ENDSELECT.
  SELECT matnr FROM mara UP TO 1 ROWS INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE matnr = '1'.
ENDDO.

"Index
DO 3 TIMES.
  SELECT SINGLE matnr FROM mara INTO mara-matnr WHERE mtart = '1'.
  SELECT matnr FROM mara UP TO 1 ROWS INTO mara-matnr WHERE mtart = '1'. ENDSELECT.
  SELECT matnr FROM mara UP TO 1 ROWS INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE mtart = '1'.
ENDDO.

"No index
DO 3 TIMES.
  SELECT SINGLE matnr FROM mara INTO mara-matnr WHERE zeivr = '1'.
  SELECT matnr FROM mara UP TO 1 ROWS INTO mara-matnr WHERE zeivr = '1'. ENDSELECT.
  SELECT matnr FROM mara UP TO 1 ROWS INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE zeivr = '1'.
ENDDO.


3. Count можно использовать для проверки существования записи в виде select count(*) from mara where matnr = 'XXXX'. Естественно, так нужно делать только когда в where полный первичный ключ. Полезно, когда лень заводить отдельную переменную для результата select single Very Happy .
Back to top
View user's profile Send private message
Shvetz
Специалист
Специалист



Joined: 05 Oct 2007
Posts: 53

PostPosted: Thu Sep 27, 2012 4:10 pm    Post subject: Reply with quote

Ну что проблему то решили? Very Happy
Back to top
View user's profile Send private message
Mania4e11o
Участник
Участник


Age: 34
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Thu Sep 27, 2012 4:15 pm    Post subject: Reply with quote

Shvetz wrote:
Ну что проблему то решили? Very Happy


На самом деле,для меня вообще не понятно, имеет ли место вопрос,
Quote:
как удалить записи из локальной таблицы, по определенным параметрам?
Back to top
View user's profile Send private message Blog
Shvetz
Специалист
Специалист



Joined: 05 Oct 2007
Posts: 53

PostPosted: Thu Sep 27, 2012 4:18 pm    Post subject: Reply with quote

off:
SELECT.. ENDSELECT необходим при построении логических БД. Этот тот случай когда без этого никак, других вариантов нет.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.