oracle 存储过程in out inout三种参数模式和PROMPT用法
(2012-02-10 17:32:03)
标签:
杂谈 |
文章分类:数据库
oracle
存储过程in out inout三种参数模式
oracle
in
create or replace procedure update_price(
p_product_id in NUMBER,
p_factor in NUMBER)
AS
.....
exexute
update_price(2,2.5);
out
in out
out
in
create or replace procedure gettest2(stdname in varchar2,p_cursor
in out types.mytype)
as
begin
open p_cursor for select * from test where
name=stdname;
end;
stdname
p_cursor
--------------------------------------------------------------------------------------------------------------------
oracle
create [or replace] procedure
procedure_name
[ (argment [ { in| in out }] type,
argment [ { in | out | in out } ] type
{ is | as }
<
(
Begin
<
exception
<
end;
l
l
l
l
CREATE OR REPLACE PROCEDURE ModeTest (
p_InParameter IN NUMBER,
p_OutParameter OUT NUMBER,
p_InOutParameter IN OUT NUMBER) IS
v_LocalVariable NUMBER;
BEGIN
v_LocalVariable := p_InParameter; -- Legal
p_InParameter := 7; -- Illegal
p_OutParameter := 7; -- Legal
v_LocalVariable := p_outParameter; --
Illegal
v_LocalVariable := p_InOutParameter; --
Legal
p_InOutParameter := 7; -- Legal
END ModeTest;
/
§16.2.2
EXEC[UTE] procedure_name( parameter1,
parameter2…);
CREATE PACKAGE emp_data AS
TYPE EmpRecTyp IS RECORD (
emp_id NUMBER(4),
emp_name VARCHAR2(10),
job_title VARCHAR2(9),
dept_name VARCHAR2(14),
dept_loc VARCHAR2(13));
TYPE EmpCurTyp IS REF CURSOR RETURN
EmpRecTyp;
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp);
END;
/
CREATE PACKAGE BODY emp_data AS
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp) IS
BEGIN
OPEN emp_cv FOR
SELECT empno, ename, job, dname, loc FROM emp,
dept
WHERE emp.deptno = dept_no AND emp.deptno =
dept.deptno
ORDER BY empno;
END;
END;
/
COLUMN EMPNO HEADING Number
COLUMN ENAME HEADING Name
COLUMN JOB HEADING JobTitle
COLUMN DNAME HEADING Department
COLUMN LOC HEADING Location
SET AUTOPRINT ON
VARIABLE cv REFCURSOR
EXECUTE emp_data.get_staff(20,
:cv)
-----------------------------------
PROMPT
oracle
PROMPT