PERL, используя предложение WITH в подготовке базы данных - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь подготовить сложный запрос, используя WITH в perl к базе данных Oracle, и продолжаю получать ошибку при подготовке.

DBD :: Proxy :: st выполнить не удалось: сервер вернул ошибку: Не удалось выполнить метод CallMethod: DBD :: Oracle :: db Подготовка не удалась: ORA-00911: недопустимый символ (ОШИБКА DBD: ошибка, возможно, около <*>

Вот sql я пытаюсьподготовить:

my $sql = <<EOT;
;WITH GCG as (
SELECT FIRST_NAME, CONFIRMATION,EMAIL,
row_number() over (partition by EMAIL order by (1)) gemail
FROM GENERAL_VIEW 
WHERE 
CONFIRMATION is not null
AND TO_CHAR(INSERT_DATE, 'YYYY-MM-DD HH24:MI:SS') <= ?
AND TO_CHAR(INSERT_DATE, 'YYYY-MM-DD HH24:MI:SS') >= ?
AND EMAIL is not null
)
SELECT FIRST_NAME, CONFIRMATION,EMAIL FROM GCG WHERE gemail=1;
EOT

Я выполнил запрос в DataGrip и получил результат. Кажется, что может быть нюанс Perl мне не хватает.

У любого есть идеи, которые могли быпомогите мне?

Заранее спасибо.

1 Ответ

1 голос
/ 25 сентября 2019

Измените свое заявление на

my $sql = <<EOT;
WITH GCG as (
SELECT FIRST_NAME, CONFIRMATION,EMAIL,
row_number() over (partition by EMAIL order by (1)) gemail
FROM GENERAL_VIEW 
WHERE 
CONFIRMATION is not null
AND TO_CHAR(INSERT_DATE, 'YYYY-MM-DD HH24:MI:SS') <= ?
AND TO_CHAR(INSERT_DATE, 'YYYY-MM-DD HH24:MI:SS') >= ?
AND EMAIL is not null
)
SELECT FIRST_NAME, CONFIRMATION,EMAIL FROM GCG WHERE gemail=1
EOT

Бонус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...