我有一张表:
-----------------
 ----------------------------------------- -------- ----------------------------
 CUST_NBR                                           NUMBER(5)
 NAME                                               VARCHAR2(30)
 REGION_ID                                          NUMBER(5)
 INACTIVE_DT                                        DATE
 INACTIVE_IND                                       CHAR(1)
 TOT_ORDERS                                         NUMBER(5)
 LAST_ORDER_DT                                      DATE我在学习的时候想创建一个存储过程,
我这样写的
CREATE OR REPLACE PROCEDURE FIRSTPRO
(INACTIVE_IND_VALUE IN VARCHAR2)
IS
BEGIN
  IF INACTIVE_IND_VALUE='A'
  THEN
     SELECT * FROM CUSTOMER WHERE INACTIVE_IND='A'
  ELSE
    SELECT * FROM CUSTOMER WHERE INACTIVED_IND='B'
  END IF
END FIRSTPRO;每次都有
警告:创建的过程中带有编译错误。调用
exec firstpro('A')也报错,
以前搞SQL server的,感觉oracle真麻烦,
请指点一下。

解决方案 »

  1.   

    存储过程中不能用select * from table 的这种用法。如果要返回结果用游标返回。建议你看一下我的一个帖子。简单的介绍了一下这种错误的原因http://blog.matrix.org.cn/page/ricky414/?anchor=%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E5%8F%82%E6%95%B0%E5%B8%B8%E8%AF%86%E5%B0%8F%E9%97%AE%E9%A2%98