Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2023, 11:29   #1
Red Fox
Пользователь
 
Регистрация: 24.02.2014
Сообщений: 14
Хорошо Ошибка в запросе SQL с переменной к базе Oracle

Добрый день, форумчане,

Помогите, пожалуйста, исправить ошибку в запросе SQL к базе Oracle. В запросе использована переменная типа даты - NewDate.
Код:
DECLARE
   NewDate DATE;

BEGIN
   NewDate:= TO_DATE ('01/11/2022', 'DD/MM/YYYY');
END;

SELECT a.* 

FROM vw_st_imd_orders a
WHERE 
entry_date>= NewDate
AND prct_cod IN (476) 
AND order_state = 0 
AND refuse_reason NOT IN (140,122,133)  
AND recl_uncod = 12657303
Без переменной запрос работает, но после того, как добавил переменную, запрос стал выдавать ошибку:

Error report -
ORA-06550: Строка 8, столбец 1:
PLS-00103: Встретился символ "SELECT"
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Red Fox вне форума Ответить с цитированием
Старый 07.07.2023, 11:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

BEGIN - начало, END - конец
Цитата:
PLS-00103: Встретился символ "SELECT"
После конца я встретил селект, вы что-то не то творите.
p51x вне форума Ответить с цитированием
Старый 07.07.2023, 14:25   #3
Red Fox
Пользователь
 
Регистрация: 24.02.2014
Сообщений: 14
По умолчанию

p51x,

Поэтому и прошу помощи в понимании ошибки в синтаксисе. Если убрать блок с переменной, то все работает прекрасно:

Код:
--DECLARE
--   NewDate DATE;
--
--BEGIN
--   NewDate:= TO_DATE ('01/11/2022', 'DD/MM/YYYY');
--END;

SELECT a.* 

FROM vw_st_imd_orders a
WHERE 
entry_date>= '01/11/2022'      --NewDate
AND prct_cod IN (476) 
AND order_state = 0 
AND refuse_reason NOT IN (140,122,133)  
AND recl_uncod = 12657303
Red Fox вне форума Ответить с цитированием
Старый 07.07.2023, 16:30   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Так вы не только объявление убираете, а весь блок. Вы или селект в блок внесите или уберите его.
p51x вне форума Ответить с цитированием
Старый 07.07.2023, 17:06   #5
Red Fox
Пользователь
 
Регистрация: 24.02.2014
Сообщений: 14
По умолчанию

p51x,

Включил select в блок begin-end, но все равно ошибка выходит:
Код:
DECLARE
   NewDate DATE;

BEGIN
  NewDate:= TO_DATE ('01/11/2022', 'DD/MM/YYYY');
  
 SELECT a.* 
  FROM vw_st_imd_orders a
  WHERE 
  entry_date>= NewDate --'01/11/2022'
  AND prct_cod IN (476) 
  AND order_state = 0 
  AND refuse_reason NOT IN (140,122,133)  
  AND recl_uncod = 12657303;

END;
Такая ошибка:
Error report -
ORA-06550: Строка 7, столбец 10:
PL/SQL: ORA-00936: отсутствует выражение
ORA-06550: Строка 7, столбец 3:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.

Последний раз редактировалось Red Fox; 07.07.2023 в 17:15. Причина: Исправлен SQL скрипт
Red Fox вне форума Ответить с цитированием
Старый 07.07.2023, 17:13   #6
Red Fox
Пользователь
 
Регистрация: 24.02.2014
Сообщений: 14
По умолчанию

-----

Последний раз редактировалось Red Fox; 07.07.2023 в 17:16. Причина: повторение ответа
Red Fox вне форума Ответить с цитированием
Старый 14.07.2023, 09:15   #7
Red Fox
Пользователь
 
Регистрация: 24.02.2014
Сообщений: 14
По умолчанию

Нашел решение вопроса:

Код:

DEFINE NewDate= TO_DATE ('01.06.2023', 'DD.MM.YYYY')
  
SELECT a.* 
FROM vw_st_imd_orders a
WHERE 
ENTRY_DATE>= &&NewDate
AND prct_cod IN (476) 
AND refuse_reason NOT IN (140,122,133)
AND recl_uncod = 12657303
Red Fox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропажа переменной в POST запросе Тёма_) PHP 3 30.09.2016 18:15
Секционирование в базе Oracle Gift020 Помощь студентам 1 21.10.2013 17:46
ошибка при запросе к базе данных (C#) Onni Помощь студентам 3 15.05.2013 20:33
Подключение к базе Oracle BleStaR Java Базы данных (JDBC, JPA, Hibernate) 0 24.10.2010 09:58
подключение к базе ORACLE cowboy БД в Delphi 1 17.09.2009 16:48