|   |   | 
| 
 | Аналог @@rowcount в postgresql | ☑ | ||
|---|---|---|---|---|
| 0
    
        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 | ||||
| 2
    
        idw 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; | |||
| 3
    
        Конструктор1С 06.01.19✎ 13:08 | 
        Явное нарушение лицензионного соглашения 1С     | |||
| 4
    
        девопсер 06.01.19✎ 13:10 | 
        (3) да всем нас@ать на него     | |||
| 5
    
        idw 06.01.19✎ 13:21 | 
        (3) загляни на инфостарт поборник лицензионного соглашения.     | |||
| 6
    
        bolero 06.01.19✎ 14:29 | 
        - при простом исполнении DELETE из psql и многих других консолей он тебе сам напишет, сколько строчек удалил
 - в хранимке на языке plpgsql: GET DIAGNOSTICS skoka_udolil = ROW_COUNT; А вообще с помощью odata /Unpost() + DELETE удалят заодно табличные части и записи в РН, РС. В 1С нет Foreign Key от слова совсем, и контроль целостности полностью на плечах платформы. DELETE CASCADE не прокатит. | |||
| 7
    
        idw 06.01.19✎ 14:38 | 
        (6) Спасибо за дельный совет.
 А как объявить переменную skoka_udolil ? declare skoka_udolil bigint; Ругается на bigint, пробывал int и integer, тоже самое. | |||
| 8
    
        bolero 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(); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |