
给一个例子给你
CREATE OR REPLACE PACKAGE PKG_USER AS
TYPE DEPT_TYPE IS TABLE OF DEPT%ROWTYPE
PROCEDURE INSERTOPERATE(P_USERTYPE IN DEPT_TYPE)
END PKG_USER
SELECT S.OBJECT_NAME,S.STATUS FROM ALL_OBJECTS S WHERE S.OBJECT_NAME=UPPER('Pkg_User')
CREATE OR REPLACE PACKAGE BODY PKG_USER IS
PROCEDURE INSERTOPERATE(P_USERTYPE IN DEPT_TYPE) IS
BEGIN
SAVEPOINT AA
FOR I IN 1 .. P_USERTYPE.COUNT LOOP
INSERT INTO DEPT
(DEPTNO, DNAME, LOC)
VALUES
(P_USERTYPE(I).DEPTNO, P_USERTYPE(I).DNAME, P_USERTYPE(I).LOC)
END LOOP
COMMIT
EXCEPTION WHEN OTHERS THEN ROLLBACK TO AA
END INSERTOPERATE
END PKG_USER
--建立测试数据:create table BOOK(编号 number(10),书名 varchar2(20),价格 varchar2(20))
insert into BOOK values(100,'aa','88.77')
select * from BOOK
--建立存储过程:
create or replace procedure query_BOOK(name IN OUT NUMBER,MY_BOOK OUT VARCHAR2,MY_BOOK2 OUT VARCHAR2) is
begin
select 编号 ,书名,价格 INTO name,MY_BOOK,MY_BOOK2 from BOOK where 编号=name
end query_BOOK
--调用存储过程:
declare v_name number(10)
v_my_book varchar2(50)
v_my_book2 varchar2(20)
begin
v_name := 100
query_BOOK(v_name,v_my_book,v_my_book2)--调用存储过程
dbms_output.put_line('v_name is: '||v_name)
dbms_output.put_line('v_my_book is: '||v_my_book)
dbms_output.put_line('v_my_book2 is: '||v_my_book2)
exception
when others then
dbms_output.put_line(sqlerrm)
end
ps:
plsql developer -->File-->new--->SQL window-->然后就可以在d出的空白窗口里写了.
存储过程写完后,是否有错,可以看plsql developer 的左边列表:
选"My objects"-->procedures-->展开-->看你对应的存储过程,如果存储过程前面有红色交叉,则表示存储过程有错.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)