首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误PLS-00103:遇到符号"DECLARE"?

错误PLS-00103:遇到符号"DECLARE"?
EN

Stack Overflow用户
提问于 2013-05-09 18:25:30
回答 1查看 9.4K关注 0票数 2

我有一个出现错误'PL/SQL: Statement ignored‘的过程。这条消息有点含糊,我不明白为什么我的过程不能编译。所有的过程应该做的是检查客户的交付日期是否早于SYSDATE,如果它是删除的,如果不是,则输出'customer not be delete‘。

该过程的代码如下:

代码语言:javascript
复制
    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“

谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-09 18:45:51

这一行:

代码语言:javascript
复制
IF placed_order.delivery_date < SYSDATE

没有多大意义-您不能使用这样的列(考虑一下:应该将placed_order中的哪些行与SYSDATE进行比较?一?全部?)。

如果您要检查此客户是否有已发货的发货,则需要额外选择:

代码语言:javascript
复制
 CREATE PROCEDURE remove_customer (customer_id VARCHAR2) IS       
  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
    -- your code for deleting the customer here
   else
    -- raise error, show message, ...
   end if;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16459565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档