create table STUDENTS( id VARCHAR2(50) default sys_guid() not null, name VARCHAR2(20), age NUMBER(4,1), school VARCHAR2(100), grade VARCHAR2(50), address VARCHAR2(500), remarks VARCHAR2(500), ts CHAR(19) default to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') )
插入一条测试数据。当然,也可以插入自己想插入的内容。
1 2
insert into STUDENTS (id, name, age, school, grade, address, remarks, ts) values ('8A17DE17428E45D6E0530100007FABEB', 'xiaoming', 20, 'Changchun University of Architecture', 'Junior', 'Changchun, Jilin', null, '2019-06-12 11:07:57');
第一个简单的存储过程
1 2 3 4 5 6
CREATEOR REPLACE PROCEDURE stu_school AS school_name VARCHAR2(100); BEGIN SELECT school INTO school_name FROM students WHERE ID='8A17DE17428E45D6E0530100007FABEB'; dbms_output.put_line(school_name); END;
CREATEOR REPLACE PROCEDURE stu_school AS school_name students.school%TYPE; BEGIN SELECT school INTO school_name FROM students WHERE ID='8A17DE17428E45D6E0530100007FABEB'; dbms_output.put_line(school_name); END;
仅有输入参数存储过程
1 2 3 4 5 6
CREATEOR REPLACE PROCEDURE stu_address(stu_id IN students.id%TYPE) AS addr students.address%TYPE; BEGIN SELECT address INTO addr FROM students WHERE ID=stu_id; dbms_output.put_line(addr); END;
CREATEOR REPLACE PROCEDURE stu_age(stu_age OUT students.age%TYPE) AS BEGIN SELECT age INTO stu_age FROM students WHERE ID='8A17DE17428E45D6E0530100007FABEB'; END;
DECLARE stuage students.age%TYPE; BEGIN stu_age(stuage); END;
或者通过oracle函数调用带有输出参数的存储过程
1 2 3 4 5
CREATEOR REPLACE FUNCTION get_stuage(stuage OUT NUMBER) RETURN NUMBER IS BEGIN stu_age(stuage); RETURN stuage; END;
执行函数
1 2 3 4 5 6
DECLARE stuage students.age%TYPE; BEGIN dbms_output.put_line('return result:'|| get_stuage(stuage)); END;
既有输入又有输出参数的存储过程
1 2 3 4 5
CREATEOR REPLACE PROCEDURE stu_name(stuid IN students.id%TYPE, stuname OUT students.name%TYPE) AS BEGIN SELECT NAME INTO stuname FROM students WHERE ID=stuid; END;
新建存储函数调用存储过程
1 2 3 4 5
CREATEOR REPLACE FUNCTION get_stuname(stuid IN students.id%TYPE, stuname OUT students.name%TYPE) RETURN VARCHAR2 IS BEGIN stu_name(stuid, stuname); RETURN stuname; END;
执行函数
1 2 3 4 5
DECLARE stuname students.name%TYPE; BEGIN dbms_output.put_line('The student name is:'|| get_stuname('8A17DE17428E45D6E0530100007FABEB', stuname)); END;
Java调用存储过程
Java调用仅有输出参数的存储过程
针对存储过程 stu_age
1 2 3 4 5 6
CREATEOR REPLACE PROCEDURE stu_age(stu_age OUT students.age%TYPE) AS BEGIN SELECT age INTO stu_age FROM students WHERE ID='8A17DE17428E45D6E0530100007FABEB'; END;
CREATEOR REPLACE PROCEDURE stu_name(stuid IN students.id%TYPE, stuname OUT students.name%TYPE) AS BEGIN SELECT NAME INTO stuname FROM students WHERE ID=stuid; END;
createor replace function get_address(stuid in students.id%type) return varchar2 is stuaddress students.address%type; begin select address into stuaddress from students where id=stuid; return stuaddress; end;