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

Удалить все строки из таблицы



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
corsair
Участник
Участник



Joined: 06 Feb 2008
Posts: 37

PostPosted: Fri Jun 06, 2008 9:32 am    Post subject: Удалить все строки из таблицы Reply with quote

Здравствуйте!
Нужно удалить все строки из таблицы в базе данных. Синтаксис требует, чтобы было указано условие WHERE. Мне не нужно удаление по условию, мне нужно удалить все.
Back to top
View user's profile Send private message
werwolf
Участник
Участник



Joined: 19 Feb 2008
Posts: 30
Location: Ростов-на-Дону

PostPosted: Fri Jun 06, 2008 9:38 am    Post subject: Reply with quote

DELETE FROM tabname.
Back to top
View user's profile Send private message
Konstantin Anikeev
Участник
Участник



Joined: 21 May 2008
Posts: 10
Location: DE, Saarbruecken

PostPosted: Fri Jun 06, 2008 9:51 am    Post subject: Reply with quote

Если вы используете Native SQL - то вполне возможно... Ставьте WHERE 1.
_________________
Блог
Back to top
View user's profile Send private message Visit poster's website
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Fri Jun 06, 2008 9:55 am    Post subject: Reply with quote

Программно можно так (к примеру):
Code:
  DELETE FROM TABNAME CLIENT SPECIFIED WHERE MANDT = SY-MANDT.

Но лучше ручками сделать в SE11->Утилиты->Утилита база данных. Далее "Удалить данные" и "Активировать и адаптировать БД".
Back to top
View user's profile Send private message Blog
corsair
Участник
Участник



Joined: 06 Feb 2008
Posts: 37

PostPosted: Fri Jun 06, 2008 2:43 pm    Post subject: Reply with quote

Спасибо за советы.

werwolf wrote:
DELETE FROM tabname.


Пробовал, так удаляет только одну запись, которая соотвествует ключу в заголовке tabname.
Back to top
View user's profile Send private message
luka_rus
Участник
Участник



Joined: 21 Jan 2008
Posts: 35

PostPosted: Fri Jun 06, 2008 2:49 pm    Post subject: Reply with quote

corsair wrote:
Спасибо за советы.

werwolf wrote:
DELETE FROM tabname.


Пробовал, так удаляет только одну запись, которая соотвествует ключу в заголовке tabname.

tabname в данном случае имя таблицы БД. Удаляет все, однозначно.
Back to top
View user's profile Send private message
corsair
Участник
Участник



Joined: 06 Feb 2008
Posts: 37

PostPosted: Fri Jun 06, 2008 3:01 pm    Post subject: Reply with quote

luka_rus wrote:
tabname в данном случае имя таблицы БД. Удаляет все, однозначно.


Не получается, делаю:
TABLES: SFLIGHT.
DELETE FROM SFLIGHT.

ошибка синтаксиса:
"DELETE FROM dbtab" must be followed by "WHERE".

Так удаляет только одну запись:
TABLES: SFLIGHT.
DELETE SFLIGHT.
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Fri Jun 06, 2008 3:47 pm    Post subject: Reply with quote

То что требуется WHERE - так сделано специально, тот кто хоть раз случайно запускал DELETE без WHERE - поймет Wink
Вариантов обхода много

Если вам нужно удалить только из текущего манданта:
1. delete from sflight where carid <> 'X-X'.
delete from sflight where carid = 'X-X'.
2. delete from sflight client specified where mandt = sy-mandt.

Если же вам нужно очистить таблицу полностью, невзирая на манданты или в других мандантах точно ничего нет - то
Code:
EXEC SQL.
 TRUNCATE SFLIGHT
ENDEXEC.

Еще раз повторюсь - в этом случае таблица будет очищена быстро и полностью, COMMIT/ROLLBACK тут побоку
Back to top
View user's profile Send private message Blog
luka_rus
Участник
Участник



Joined: 21 Jan 2008
Posts: 35

PostPosted: Sat Jun 07, 2008 6:23 am    Post subject: Reply with quote

corsair wrote:
luka_rus wrote:
tabname в данном случае имя таблицы БД. Удаляет все, однозначно.


Не получается, делаю:
TABLES: SFLIGHT.
DELETE FROM SFLIGHT.

ошибка синтаксиса:
"DELETE FROM dbtab" must be followed by "WHERE".

Так удаляет только одну запись:
TABLES: SFLIGHT.
DELETE SFLIGHT.

Хм... странно.
Code:

  DELETE FROM zpp_priz_matnr.
  COMMIT WORK AND WAIT.

У меня отлично сносит все в таблице по текущему манданту. Может версии SAP разные.
Back to top
View user's profile Send private message
corsair
Участник
Участник



Joined: 06 Feb 2008
Posts: 37

PostPosted: Sat Jun 07, 2008 8:44 am    Post subject: Reply with quote

luka_rus wrote:
Хм... странно.
Code:

  DELETE FROM zpp_priz_matnr.
  COMMIT WORK AND WAIT.

У меня отлично сносит все в таблице по текущему манданту. Может версии SAP разные.


версия не самая новая 4.6
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
Page 1 of 1

 
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.