1) с каких пор UP TO N ROWS используется вне цикла ( без ENDSELECT)
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 .
All times are GMT + 4 Hours Goto page Previous1, 2
Page 2 of 2
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.