首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

存储过程无效

2013-07-16 
存储过程无效【急】本帖最后由 siruxuan 于 2013-07-11 23:35:11 编辑首先,我创建了一个student表,成功。--DR

存储过程无效【急】
本帖最后由 siruxuan 于 2013-07-11 23:35:11 编辑 首先,我创建了一个student表,成功。


--DROP TABLE STUDENT;
CREATE TABLE STUDENT(
  STUDENT_ID    VARCHAR2(40) PRIMARY KEY,
  STUDENT_NAME  VARCHAR2(40),
  STUDENT_AGE   VARCHAR2(3),
  STUDENT_SEX   VARCHAR2(8),
  STUDENT_DEP   VARCHAR(40),
  STUDENT_PHONE VARCHAR2(40),
  STUDENT_NOTES VARCHAR2(200)
)

PARTITION BY LIST(STUDENT_ID )
(
  PARTITION PART20091314001 VALUES ('20091314001')
);

--ADD COMMENTS ON TABLE
COMMENT ON TABLE STUDENT  IS '学生信息表';

--ADD COMMNETS ON COLUMN
COMMENT ON COLUMN  STUDENT.STUDENT_ID     IS '学号';
COMMENT ON COLUMN  STUDENT.STUDENT_NAME   IS '姓名';
COMMENT ON COLUMN  STUDENT.STUDENT_AGE    IS '年龄';
COMMENT ON COLUMN  STUDENT.STUDENT_SEX    IS '性别';
COMMENT ON COLUMN  STUDENT.STUDENT_DEP    IS '专业';
COMMENT ON COLUMN  STUDENT.STUDENT_PHONE  IS '联系方式';
COMMENT ON COLUMN  STUDENT.STUDENT_NOTES  IS '备注';



我想在此表基础上练习存储过程,编写如下:

CREATE OR REPLACE PROCEDURE P_STUDENT(V_ACCT_DAY  VARCHAR2, 
                                      V_RETCODE  OUT  VARCHAR2, 
                                      V_RETINFO OUT VARCHAR2) IS
  
BEGIN
  INSERT INTO STUDENT
     VALUES ('20091314001','安妮儿','23','女','大气科学系','15077886350','优秀毕业生');
/*  SELECT * FROM STUDENT;*/
  COMMIT;
  
  V_RETCODE='SUCCEED';
  V_RETINFO='NORMAL';
  
  EXCEPTION
    WHEN OTHERS
      V_RETCODE='FAIL';
      V_RETINFO=SQLERRM;
  END;
  


END P_STUDENT;



在命令窗口:

SQL>EXEC P_STUDENT;


输出错误:
ORA-06550: 第 1 行, 第 7 列: 
PLS-00905: 对象 SYS.P_STUDENT 无效
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored

显示错误

SQL>show  errors  procedure P_STUDENT 
Errors for PROCEDURE SYS.P_STUDENT:
LINE/COL ERROR
-------- ----------------------
8/36     PL/SQL: ORA-00911: 无效字符
7/3      PL/SQL: SQL Statement ignored
12/12    PLS-00103: 出现符号 "="在需要下列之一时:   := . ( @ % ;  


或者 test时,弹出窗口:

P_STUDENT is invalid

PL/SQL 存储过程 invalid oracle 无效
[解决办法]



CREATE OR REPLACE PROCEDURE P_STUDENT(V_ACCT_DAY  VARCHAR2,

                                      V_RETCODE  OUT  VARCHAR2,
                                      V_RETINFO OUT VARCHAR2) IS

BEGIN
  INSERT INTO STUDENT
     VALUES ('20091314001','安妮儿','23','女','大气科学系','15077886350','优秀毕业生');
/*  SELECT * FROM STUDENT;*/
  COMMIT;

  V_RETCODE :='SUCCEED';
  V_RETINFO :='NORMAL';

  EXCEPTION
    WHEN OTHERS then 
      V_RETCODE :='FAIL';
      V_RETINFO :=SQLERRM;



END P_STUDENT;

declare 
V_RETCODE    VARCHAR2(10);
V_RETINFO  VARCHAR2(500);
begin 
   P_STUDENT('haha',V_RETCODE,V_RETINFO);
   dbms_output.put_line('V_RETCODE: '
[解决办法]
V_RETCODE
[解决办法]
chr(13)
[解决办法]
'V_RETINFO: '
[解决办法]
V_RETINFO);
end;




[解决办法]
里面这么多基本性错误,有pl/sql developer 你还不知道错在哪里??搞笑。。。

CREATE OR REPLACE PROCEDURE P_STUDENT(V_ACCT_DAY VARCHAR2,
                                      V_RETCODE  OUT VARCHAR2,
                                      V_RETINFO  OUT VARCHAR2) IS

BEGIN
  INSERT INTO STUDENT
  VALUES
    ('20091314001',
     '安妮儿' , '23',
     '女',
     '大气科学系',
     '15077886350',
     '优秀毕业生');
  /*  SELECT * FROM STUDENT;*/
  COMMIT;

  V_RETCODE := 'SUCCEED';
  V_RETINFO := 'NORMAL';

EXCEPTION
  WHEN OTHERS then
    V_RETCODE := 'FAIL';
    V_RETINFO := SQLERRM;
  
END P_STUDENT;

热点排行
Bad Request.