Функция, совместимая с датами, от Oracle до Postgres - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь преобразовать приведенное ниже определение в Postgres.

Текущий код Oracle:

PROCEDURE Run_All (inDate DATE DEFAULT SYSDATE) IS

В Postgres я использовал разные версии:

  1. CREATE OR REPLACE FUNCTION ssp2_pcat.gen_fios_xml$run_all
       (indate timestamp(0) DEFAULT CURRENT_DATE)
    
  2. CREATE OR REPLACE FUNCTION ssp2_pcat.gen_fios_xml$run_all
       (indate timestamp without timezone DEFAULT ('now'::text)::date)
    
  3. CREATE OR REPLACE FUNCTION ssp2_pcat.gen_fios_xml$run_all
       (indate date DEFAULT ('now'::text)::date)
    
  4. CREATE OR REPLACE FUNCTION ssp2_pcat.gen_fios_xml$run_all
       (indate timestamp(0) DEFAULT CURRENT_TIMESTAMP::timestamp(0))
    

Но все равно выдает ошибку, как показано ниже:

ERROR:  column "timestamp" does not exist
LINE 1: SELECT TIMESTAMP
               ^
QUERY:  SELECT TIMESTAMP
CONTEXT:  PL/pgSQL function "gen_fios_xml$run_all"(date) line 13 during statement block local variable initialization
SQL state: 42703

Как правильно конвертировать, я что-то упускаю в Postgres?Любое обновление абсолютно ценится!

1 Ответ

0 голосов
/ 14 ноября 2018

Ошибка не в той части функции, которую вы показываете, а в строке 13 тела функции в выражении SELECT.

Ваши сигнатуры функций должны работать, но если вам нужноЧасовая часть Oracle DATE, идеальный перевод будет:

CREATE FUNCTION ssp2_pcat.gen_fios_xml$run_all
    (indate timestamp(0) without time zone DEFAULT localtimestamp(0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...