powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос процедуры из Оракла, что не так?
12 сообщений из 12, страница 1 из 1
Перенос процедуры из Оракла, что не так?
    #39523314
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть такая процедурка в Оракле:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE OR REPLACE procedure IKIS_CIS.err_imp_docs_param2(dt_from in date, dt_to in date) is
dt_part date;
num number;
i number :=0;
begin
  EXECUTE IMMEDIATE 'alter session set nls_date_format="dd.mm.yyyy hh24:mi:ss"';
--  if dt_to = dt_from then
  num := to_number(dt_to - dt_from + 1)*24;
 -- else 
--  num := to_number(dt_to - dt_from)*24;
--  end if;
  dt_part := dt_from -1/24;
  
  loop
  i := i + 1;
  dt_part := dt_part +1/24;
  if i <= num then
  insert into ikis_cis.err_docs_param2(date_month,
                              crt_crt_id,
                              DOC_ID,DELAY_PUBLICATION_TERM, IS_BLOCKED) 
SELECT DISTINCT TO_CHAR(d.dt_import, 'mm.yyyy') ,d.crt_crt_id, D.DOC_ID, d.DELAY_PUBLICATION_TERM, D.IS_BLOCKED
  --D.REG_NUMB, D.DT_IMPORT
  FROM ICC_RSR.DOCUMENTS d,
       ICC_RSR.DOC_TEXTS dt                      --, ICC_RSR.DOC_IMAGES di
 WHERE                                                      --D.CRT_CRT_ID=809
      DT.DOC_DOC_ID = D.DOC_ID
       AND (upper(dt.text) like upper('?0=40=') 
       or upper(dt.text) like upper('%:>@8ABL%') 
       or upper(dt.text) like upper('%?@>4>265==O%') 
       or upper(dt.text) like upper('%@57C;LB0BV%') 
       or upper(dt.text) like upper('%@>;V%') 
       or upper(dt.text) like upper('%A8;C%') 
       or upper(dt.text) like upper('%@07V%') 
       or upper(dt.text) like upper('%?@>BO3><%') 
       or upper(dt.text) like upper('%FV;OE%')) 
       AND D.ST_ST_ID not in (7)
       AND DT.IS_ROW_DELETE <> 1
       AND DT.IS_IMPERSONAL <> 0
       AND D.IMP_ST_ST_ID in (15,20)
       and D.ST_ST_ID=6
       AND D.DT_IMPORT >= TO_DATE (dt_part, 'dd.mm.yyyy HH24:MI:SS') 
       and D.DT_IMPORT <= TO_DATE (dt_part, 'dd.mm.yyyy HH24:MI:SS')+1/24;
      commit;
      else return;
  end if;
end loop;

end err_imp_docs_param2;
/



Хочу ее перенсти в постгрес:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
--------------- SQL ---------------

CREATE FUNCTION public.test (
  dt_from date,
  dt_to date,
  i integer = 0
)
RETURNS void AS
$body$
DECLARE
  dt_part timestamp;
  num INTEGER;
  begin
  --EXECUTE IMMEDIATE 'alter session set nls_date_format="dd.mm.yyyy hh24:mi:ss"';
  --  if dt_to = dt_from then
  --i   : = NULL;
  num := to_number(dt_to - dt_from + 1)*24;
  -- else 
  --  num := to_number(dt_to - dt_from)*24;
  --  end if;
  dt_part := dt_from -1/24;
  loop
    i := i + 1;
    dt_part := dt_part +1/24;
    if i <= num then
      insert into
        err_docs_param2(date_month, crt_crt_id, DOC_ID, DELAY_PUBLICATION_TERM, IS_BLOCKED)
      SELECT
        DISTINCT TO_CHAR(d.dt_import, 'mm.yyyy'),
        d.crt_crt_id,
        D.DOC_ID,
        d.DELAY_PUBLICATION_TERM,
        D.IS_BLOCKED
      FROM
        DOCUMENTS d,
        doc_texts dt
      WHERE
        DT.DOC_DOC_ID = D.DOC_ID AND
        (upper(dt.tekst) like upper('?0=40=') or
        upper(dt.tekst) like upper('%:>@8ABL%') or
        upper(dt.tekst) like upper('%?@>4>265==O%') or
        upper(dt.tekst) like upper('%@57C;LB0BV%') or
        upper(dt.tekst) like upper('%@>;V%') or
        upper(dt.tekst) like upper('%A8;C%') or
        upper(dt.tekst) like upper('%@07V%') or
        upper(dt.tekst) like upper('%?@>BO3><%') or
        upper(dt.tekst) like upper('%FV;OE%')) AND
        D.ST_ST_ID not in (7) AND
        DT.IS_ROW_DELETE <> 1 AND
        DT.IS_IMPERSONAL <> 0 AND
        D.IMP_ST_ST_ID in (15, 20) and
        D.ST_ST_ID = 6 AND
        D.DT_IMPORT >= to_timestamp(dt_part, 'dd.mm.yyyy HH24:MI:SS') and
        D.DT_IMPORT <= to_timestamp(dt_part, 'dd.mm.yyyy HH24:MI:SS')+1/24;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;



вылазит сообщение об ошибке:
Код: sql
1.
2.
3.
ERROR:  syntax error at end of input
LINE 47: $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECU...
         ^



Что я делаю не так?
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523319
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

Текст функции в общем виде таков:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION … AS $body$
DECLARE
  …
BEGIN
  …
END;
$body$ LANGUAGE plpgsql;


У вас функция не “закончена”, `IF` не закрыт, `LOOP` не закрыт (в обратном порядке).
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523320
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

Нужен END, чтобы завершить определение функции.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523356
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за подсказки. Переписал так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
CREATE OR REPLACE FUNCTION public.test (
  dt_from date,
  dt_to date,
  i integer = 0
)
RETURNS void AS
$body$
DECLARE
  dt_part date;
  num INTEGER;
  begin
  num := (dt_to - dt_from + 1)*24;
  dt_part := dt_from -1/24;
  loop
    i := i + 1;
    dt_part := dt_part+1/24;
    if i <= num then
      insert into
        err_docs_param2(date_month, crt_crt_id, DOC_ID, DELAY_PUBLICATION_TERM, IS_BLOCKED)
      SELECT
        DISTINCT TO_CHAR(d.dt_import, 'mm.yyyy'),
        d.crt_crt_id,
        D.DOC_ID,
        d.DELAY_PUBLICATION_TERM,
        D.IS_BLOCKED
      FROM
        DOCUMENTS d,
        doc_texts dt
      WHERE
        DT.DOC_DOC_ID = D.DOC_ID AND
        (upper(dt.tekst) like upper('?0=40=') or
        upper(dt.tekst) like upper('%:>@8ABL%') or
        upper(dt.tekst) like upper('%?@>4>265==O%') or
        upper(dt.tekst) like upper('%@57C;LB0BV%') or
        upper(dt.tekst) like upper('%@>;V%') or
        upper(dt.tekst) like upper('%A8;C%') or
        upper(dt.tekst) like upper('%@07V%') or
        upper(dt.tekst) like upper('%?@>BO3><%') or
        upper(dt.tekst) like upper('%FV;OE%')) AND
        D.ST_ST_ID not in (7) AND
        DT.IS_ROW_DELETE <> 1 AND
        DT.IS_IMPERSONAL <> 0 AND
        D.IMP_ST_ST_ID in (15, 20) and
        D.ST_ST_ID = 6 AND
        D.DT_IMPORT >= (dt_part) and
        D.DT_IMPORT <= (dt_part)+1/24;
        else return;
  end if;
end loop;
end;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;



но при этом у меня почему-то в таблицу err_docs_param2 инсертится 48 записей дублей одного и того же DOC_ID, почему так? По идее должна быть одна запись.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523487
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

Мне думается, что вы начали заниматься теми же извращёнными манипуляциями с датами, которые характерны для ORACLE-а:
Код: plaintext
1.
num := (dt_to - dt_from + 1)*24;
dt_part := dt_from -1/24;

В Postgres'е иначе всё работает, и в типе `date` нету временной составляющей. Вам следует использовать тип `timestamptz` и для манипуляций пользоваться интервалами.

Что там происходит — не знаю. Добавьте отладку через конструкцию `RAISE NOTICE`. Скорее всего в этом выражении
Код: sql
1.
num := (dt_to - dt_from + 1)*24;

получается не `1`, а 48 — очень похоже.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523500
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

Спасибо за разъяснения. Хотелось бы еще уточнить следующее:

у меня колонка dt_import в таблице DOCUMENTS имеет тип - timestamp, как правильно нужно указать диапазон в постгресе
для такого типа?
Код: sql
1.
dt_part timestamp; --то вываливается ошикба


если указал как в приведенном своем примере, то данная айдишка не выбирается, диапазон задаю в виде:
01.06.2017
и
02.06.2017
но при этом сам атрибут dt_import имеет вид 01.06.2017 16:20:35
когда же убираю время и оставляю только дату для этой айдишки, то она выбирается как я уже озвучивал - 48 раз!, но вы это уже пояснили и я понял, осталось разобраться как привести правильно атрибут со временем.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523514
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

Range types...
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523531
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

Хм, не совсем понял что у вас не работает.

Код: plaintext
1.
2.
...
        D.DT_IMPORT >= (dt_part) and
        D.DT_IMPORT <= (dt_part)+1/24;

Вам нужно поступить так:
все переменные в теле функции привести к тем же типам, что и соответствующие им колонки. Postgres очень требователен к типам;

при работе с датами я предпочитаю использовать YYYY-MM-DD HH24:MI:SS нотацию (ISO8601), т.к. ПЖ “понимает” её легко в виде строковых констант, с другими форматами можно нарваться;

если типу `timestamp`/`timestamptz` вы присваиваете дату, то время берётся по полуночи 00:00;

в данном случае я бы использовал что-то такое: `d.dt_import >= dt_part AND d.dt_import < dt_part + INTERVAL '1day'` — обращаю внимание на открытую верхнюю границу диапазона

Рекомендации общие:

Postgres запросы приводит к нижнему регистру (в отличии от ORACLE и от стандарта), так что шифт можно не зажимать


если вы получаете ошибку, то очень полезно приводить её целиком — сообщения более информативны, чем у ORACLE;

в Postgres-е есть Set-Returning-Functions , они полезны для генерации последовательностей;

у вас очень ”процедурный” код. рекомендую посмотреть на конструкции вида `FOR var IN query LOOP ... END LOOP `, очень удобно.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523596
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,
Спасибо за подробное описание. В продолжение вопроса, привожу формат таблицы документов.

"doc_id""case_numb""crt_crt_id""st_st_id""dt_case""dt_registration""row_version""is_row_delete""pkg_pkg_id""prev_case_numb""prev_dt_case""rc_doc_vr_type""rc_doc_cs_type""csc_csc_id""rc_doc_ins_type""old_case_numb""old_dt_case""prev_crt_crt_id""prev_dt_registration""is_ph_present""is_gov_present""is_session_public""full_st_st_id""imp_st_st_id""dt_created""is_blocked""is_archiv""file_name""dt_import""rc_doc_src_type""is_err_letter_exists""usr_usr_id""reg_numb""crt_name""crt_prev_uid""crt_prev_name""doc_prev_uid""dt_notice""dt_law""judge_fio""binary_image_count""crt_crt_tag_id""tag_numb""dt_tag""crt_uid""doc_uid""is_signature_present""dt_notice_impersonal""is_return_on_dep""is_return_on_dest""dt_disabled""is_jur_present""rc_doc_process_type""usr_usr_dest_id""usr_usr_dep_id""dt_operation_dest""dt_operation_dep""is_temp_block_public""is_problem""delay_publication_term""dnzs_id""date_doc_send_from_court""dt_doc_sign_send_from_court""dt_doc_text_send_from_court""dt_zvit""hearingclosed"66 825 571"326/630/17"  465  622.05.201730.05.2017  20null"null"null  5  1 1 078  1"null"nullnullnull101  8  1501.06.2017 0:00:0000"0822_1323284.html"01.06.2017 16:08:18  40  1"66825571""Приморський районний суд Запорізької області""null""null""null"01.06.2017 0:00:0005.06.2017"Стріжакова Т. В."  0  465"null"null"819""1323284"106.06.2017 0:00:00nullnullnull0  1  1nullnullnullnull0null30 698 84331.05.2017 0:00:0031.05.2017 0:00:0031.05.201731.05.2017null


Теперь привожу решение функции, которую перенес из Оракла:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
CREATE OR REPLACE FUNCTION public.test (
  dt_from date,
  dt_to date,
  i integer = 0
)
RETURNS void AS
$body$
DECLARE
  dt_part date;
  num INTEGER;
  begin
  set timezone = 'Europe/Kiev';
  num := (dt_to - dt_from + 1)*24;
  dt_part := dt_from -1/24;
  loop
    i := i + 1;
    dt_part := (dt_part)+1/24;
    if i <= num then
      insert into
        err_docs_param2(date_month, crt_crt_id, DOC_ID, DELAY_PUBLICATION_TERM, IS_BLOCKED)
      SELECT
        DISTINCT TO_CHAR(d.dt_import, 'mm.yyyy'),
        d.crt_crt_id,
        D.DOC_ID,
        d.DELAY_PUBLICATION_TERM,
        D.IS_BLOCKED
      FROM
        DOCUMENTS d,
        doc_texts dt
      WHERE
        DT.DOC_DOC_ID = D.DOC_ID AND
        ((dt.tekst) like ('?0=40=') or
        (dt.tekst) like ('%:>@8ABL%') or
        (dt.tekst) like ('%?@>4>265==O%') or
        (dt.tekst) like ('%@57C;LB0BV%') or
        (dt.tekst) like ('%@>;V%') or
        (dt.tekst) like ('%A8;C%') or
        (dt.tekst) like ('%@07V%') or
        (dt.tekst) like ('%?@>BO3><%') or
        (dt.tekst) like ('%FV;OE%')) AND
        D.ST_ST_ID not in (7) AND
        DT.IS_ROW_DELETE <> 1 AND
        DT.IS_IMPERSONAL <> 0 AND
        d.doc_id=66825571 AND
        D.IMP_ST_ST_ID in (15, 20) and
        D.ST_ST_ID = 6 AND
        D.DT_IMPORT >= (dt_part) and
        D.DT_IMPORT <= (dt_part)+1/24;
        else return;
  end if;
end loop;
end;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;



при таком раскладе функция не находит данный документ, но если я из даты уберу время, то поиск проходит, но при этом кол-во записей в таблицу ошибок дублируются 48 раз (с этим вопросом понятно, т.к. задается период 2 суток, 01-02/06/2017 и он по формуле разбивается на цикл в 48 проходов).
Как привести данные в функции к формату даты - dd.mm.yyyy h24:mm:ss
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523601
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

для чего нужно именно так - расчет должен производиться не по дням, а по часам , поэтому и надо построить цикл, чтобы опрос по таблице документов проходил 24 раза за сутки.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523617
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheriffua,

а приведите DDL для таблицы, пожалуйста, я с картинками не очень;

а вот так вот делать не очень хорошо `set timezone = 'Europe/Kiev';`, потом искать все такие “нычки” по коду очень грустно. полагайтесь на настройки сессии;

вы в коде ничего не поменяли в местах работы с датами. зачем там везде пляски с 24 часами?

Если вы хотите помощи в логике, то поясните что означают входные параметры функции, особенно `i`.
...
Рейтинг: 0 / 0
Перенос процедуры из Оракла, что не так?
    #39523637
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,
Передалал так и процес пошел:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
CREATE OR REPLACE FUNCTION public.test (
  dt_from date,
  dt_to date,
  i integer = 0
)
RETURNS void AS
$body$
DECLARE
  dt_part TIMESTAMP;
  num INTEGER;
  begin
  set timezone = 'Europe/Kiev';
  num := (dt_to - dt_from + 1)*24;
  dt_part := dt_from - INTERVAL'1 HOUR';
  loop
    i := i + 1;
    dt_part := (dt_part)+ INTERVAL'1 HOUR';
    if i <= num then
      insert into
        err_docs_param2(date_month, crt_crt_id, DOC_ID, DELAY_PUBLICATION_TERM, IS_BLOCKED)
      SELECT
        DISTINCT TO_CHAR(d.dt_import, 'mm.yyyy'),
        d.crt_crt_id,
        D.DOC_ID,
        d.DELAY_PUBLICATION_TERM,
        D.IS_BLOCKED
      FROM
        DOCUMENTS d,
        doc_texts dt
      WHERE
        DT.DOC_DOC_ID = D.DOC_ID AND
        ((dt.tekst) like ('?0=40=') or
        (dt.tekst) like ('%:>@8ABL%') or
        (dt.tekst) like ('%?@>4>265==O%') or
        (dt.tekst) like ('%@57C;LB0BV%') or
        (dt.tekst) like ('%@>;V%') or
        (dt.tekst) like ('%A8;C%') or
        (dt.tekst) like ('%@07V%') or
        (dt.tekst) like ('%?@>BO3><%') or
        (dt.tekst) like ('%FV;OE%')) AND
        D.ST_ST_ID not in (7) AND
        DT.IS_ROW_DELETE <> 1 AND
        DT.IS_IMPERSONAL <> 0 AND
        --d.doc_id=66825571 AND
        D.IMP_ST_ST_ID in (15, 20) and
        D.ST_ST_ID = 6 AND
        D.DT_IMPORT >= (dt_part) and
        D.DT_IMPORT <= (dt_part) + INTERVAL'1 HOUR';
        else return;
  end if;
end loop;
end;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;



возможно как-то можно упростить данную функцию с использованием фич ПЖ...но пока как говорится только начал его изучение.
а DDL таблицы таков:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
CREATE TABLE public.documents (
  doc_id INTEGER NOT NULL,
  case_numb VARCHAR(70),
  crt_crt_id INTEGER,
  st_st_id INTEGER NOT NULL,
  dt_case DATE,
  dt_registration DATE,
  row_version INTEGER NOT NULL,
  is_row_delete NUMERIC(1,0) NOT NULL,
  pkg_pkg_id INTEGER,
  prev_case_numb VARCHAR(70),
  prev_dt_case DATE,
  rc_doc_vr_type INTEGER,
  rc_doc_cs_type INTEGER,
  csc_csc_id INTEGER,
  rc_doc_ins_type INTEGER,
  old_case_numb VARCHAR(70),
  old_dt_case DATE,
  prev_crt_crt_id INTEGER,
  prev_dt_registration DATE,
  is_ph_present NUMERIC(1,0),
  is_gov_present NUMERIC(1,0),
  is_session_public NUMERIC(1,0),
  full_st_st_id INTEGER NOT NULL,
  imp_st_st_id INTEGER,
  dt_created TIMESTAMP WITHOUT TIME ZONE,
  is_blocked NUMERIC(1,0) NOT NULL,
  is_archiv NUMERIC(1,0),
  file_name VARCHAR(255),
  dt_import TIMESTAMP WITHOUT TIME ZONE,
  rc_doc_src_type INTEGER,
  is_err_letter_exists NUMERIC(1,0),
  usr_usr_id INTEGER NOT NULL,
  reg_numb VARCHAR(15) NOT NULL,
  crt_name VARCHAR(255),
  crt_prev_uid VARCHAR(12),
  crt_prev_name VARCHAR(255),
  doc_prev_uid VARCHAR(64),
  dt_notice TIMESTAMP WITHOUT TIME ZONE,
  dt_law DATE,
  judge_fio VARCHAR(90),
  binary_image_count INTEGER NOT NULL,
  crt_crt_tag_id INTEGER,
  tag_numb VARCHAR(30),
  dt_tag DATE,
  crt_uid VARCHAR(12),
  doc_uid VARCHAR(64),
  is_signature_present NUMERIC(1,0) NOT NULL,
  dt_notice_impersonal TIMESTAMP WITHOUT TIME ZONE,
  is_return_on_dep NUMERIC(1,0),
  is_return_on_dest NUMERIC(1,0),
  dt_disabled TIMESTAMP WITHOUT TIME ZONE,
  is_jur_present NUMERIC(1,0),
  rc_doc_process_type INTEGER,
  usr_usr_dest_id INTEGER,
  usr_usr_dep_id INTEGER,
  dt_operation_dest TIMESTAMP WITHOUT TIME ZONE,
  dt_operation_dep TIMESTAMP WITHOUT TIME ZONE,
  is_temp_block_public INTEGER,
  is_problem NUMERIC(1,0) DEFAULT 0,
  delay_publication_term INTEGER,
  dnzs_id BIGINT,
  date_doc_send_from_court TIMESTAMP WITHOUT TIME ZONE,
  dt_doc_sign_send_from_court TIMESTAMP WITHOUT TIME ZONE,
  dt_doc_text_send_from_court DATE,
  dt_zvit DATE,
  hearingclosed INTEGER,
  CONSTRAINT documents_pkey PRIMARY KEY(doc_id),
  CONSTRAINT doc_csc_fk FOREIGN KEY (csc_csc_id)
    REFERENCES public.dict_case_categories(csc_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT doc_pkg_fk FOREIGN KEY (pkg_pkg_id)
    REFERENCES public.packs(pkg_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT documents_crt_fk FOREIGN KEY (crt_crt_id)
    REFERENCES public.dict_courts(crt_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT documents_full_st_fk FOREIGN KEY (full_st_st_id)
    REFERENCES public.dict_statuses(st_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT documents_imp_st_fk FOREIGN KEY (imp_st_st_id)
    REFERENCES public.dict_statuses(st_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT documents_st_fk FOREIGN KEY (st_st_id)
    REFERENCES public.dict_statuses(st_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE
) 
WITH (oids = false);



и спасибо за помощь.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос процедуры из Оракла, что не так?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]