Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Аналог @@rowcount в postgresql

Аналог @@rowcount  в postgresql
Я
   idw
 
06.01.19 - 12:37
Хочу подчистить базу 1С с помощью PostgreSQL.

Есть такой код под MS SQL:

set rowcount 100000
set dateformat ymd
DElete from _Document452
  where _Document452._Date_Time >=('4018-12-01 00:00:00')
and _Document452._Date_Time <=('4018-12-31 23:59:59')

while @@rowcount > 0
begin
DElete from _Document452
  where _Document452._Date_Time >=('4018-12-01 00:00:00')
and _Document452._Date_Time <=('4018-12-31 23:59:59')
end;

Но как его переделать под Postgress?
В Postgress нет такой конструкции @@rowcount
 
 
   МихаилМ
 
1 - 06.01.19 - 12:41
   idw
 
2 - 06.01.19 - 12:48
То есть так?

declare
 rows_count bigint := 0;

set dateformat ymd
DElete from _Document452
  where _Document452._Date_Time >=('4018-12-01 00:00:00')
and _Document452._Date_Time <=('4018-12-31 23:59:59')

get diagnostics rows_count = row_count;

while row_count > 0
begin
DElete from _Document452
  where _Document452._Date_Time >=('4018-12-01 00:00:00')
and _Document452._Date_Time <=('4018-12-31 23:59:59')
end;
   Конструктор1С
 
3 - 06.01.19 - 13:08
Явное нарушение лицензионного соглашения 1С
   девопсер
 
4 - 06.01.19 - 13:10
(3) да всем нас@ать на него
   idw
 
5 - 06.01.19 - 13:21
(3) загляни на инфостарт поборник лицензионного соглашения.
   bolero
 
6 - 06.01.19 - 14:29
- при простом исполнении DELETE из psql и многих других консолей он тебе сам напишет, сколько строчек удалил

- в хранимке на языке plpgsql: GET DIAGNOSTICS skoka_udolil = ROW_COUNT;

А вообще с помощью odata /Unpost() + DELETE удалят заодно табличные части и записи в РН, РС.

В 1С нет Foreign Key от слова совсем, и контроль целостности полностью на плечах платформы. DELETE CASCADE не прокатит.
   idw
 
7 - 06.01.19 - 14:38
(6) Спасибо за дельный совет.
А как объявить переменную skoka_udolil ?

declare
 skoka_udolil bigint;

Ругается на bigint, пробывал int и integer, тоже самое.
   bolero
 
8 - 06.01.19 - 15:08
CREATE OR REPLACE FUNCTION udolit()
  RETURNS NUMERIC AS
$$
DECLARE
  skoka_udolil BIGINT;
BEGIN
  CREATE TEMPORARY TABLE IF NOT EXISTS t (
    a INTEGER
  );
  INSERT INTO t VALUES (1), (2), (3);
  DELETE FROM t WHERE 1=1;
  GET DIAGNOSTICS skoka_udolil = ROW_COUNT;
  RETURN skoka_udolil;
END;
$$
  LANGUAGE plpgsql;

SELECT udolit();

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует