|
Аналог @@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();
|
|