У меня есть процедура, которая вызывает ошибку «PL/SQL: Statement ignored». Это сообщение немного расплывчато, и я не могу понять, почему моя процедура не будет компилироваться. Вся процедура должна быть проверена, если дата доставки клиента меньше SYSDATE, а если она удалена, и если не печатать, клиент не может быть удален.ОШИБКА PLS-00103: Встречался символ «DECLARE»?
Код для процедуры здесь:
CREATE PROCEDURE remove_customer (customer_id VARCHAR2) IS
declare
ordersCount pls_integer;
BEGIN
select count(*) into ordersCount
from placed_orders
where fk1_customer_id = remove_customer.customer_id
and delivery_date < sysdate;
if ordersCount = 0 then
THEN
DELETE FROM order_line
WHERE order_line.FK1_order_id in
(SELECT order_id FROM placed_order
WHERE placed_order.FK1_customer_id = remove_customer.customer_id
);
DELETE FROM placed_order
WHERE placed_order.FK1_customer_id = remove_customer.customer_id;
DELETE FROM customer
WHERE customer.customer_id = remove_customer.customer_id;
total_customers := total_customers - 1;
ELSE
DBMS_OUTPUT.PUT_LINE 'Customer currently has a order been delivered';
END IF;
END;
И сообщение об ошибке с указанием PLS-00103: Обнаружен символ «DECLARE»
спасибо за любые советы.
вы не можете использовать непосредственно placed_order.delivery_date в placed_order представляет собой таблицу, и вы не можете поставить условие на таблицу, как показано в коде. вы можете лучше получить это значение в одну переменную, а затем поставить условие там. [ваш предыдущий пост] (http://stackoverflow.com/questions/16459211/procedure-to-delete-only-if-database-higher-then-sysdate/16459824#16459824) –
Привет, спасибо за то, что это то, что я делаю но код все еще не работает –