oracle 存储过程in out inout三种参数模式和PROMPT用法

oracle   储过 in out inout 参数模式  


oracle
程中定 in|out|in out3 中参数模式, 个参数可以 选择  
in
  是参数的默 模式, 这种 模式就是在程序运行的 候已 具有 ,在程序体中 不会改  
个例子  
create or replace procedure update_price( 
p_product_id in NUMBER, 
p_factor in NUMBER) 
AS 
..... 
你在引用 程的 参数  
exexute update_price(2,2.5); 
是定 2 个参数就得到了 in 模式下 不能  

out
模式定 的参数只能在 程体内部 赋值 ,表示 参数可以将某个 值传递 用他的  
in out
  表示高参数可以向 该过 程中 传递值 ,也可以将某个 值传 出去  
简单 in 参数就是 入但存 储过 程里面 理的参数  
out
参数就是返回 的参数。  
in
参数就像 c++ 言里函数一般的参数那  
out 函数就像 c++ 里函数的引用 型参数一  
不知道我比 是否正确, 高手指点  
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
in 参数, 传进 去供 查询语 句使用  
p_cursor
  out 参数,返回 查询 果集  

-------------------------------------------------------------------------------------------------------------------- 

oracle
  储过   in out2009-08-11 16:30 
法:  

create [or replace] procedure procedure_name 
[ (argment [ { in| in out }] type, 
argment [ { in | out | in out } ] type 
{ is | as } 
<
. 量的
(
  :   不用   declare    
Begin 
<
行部分
exception 
<
的异常
end; 

l
  里的 IN 表示向存 储过 传递 参数, OUT 表示从存 储过 程返回参数。 IN OUT   表示 传递 参数和返回参数;  
l
  在存 储过 程内的 型只能指定 型;不能指定 度;  
l
  AS IS   后声明要用到的 量名称和 型及 度;  
l
  AS IS   后声明 量不要加 declare   句。  


1  

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
  使用  
储过 程建立完成后,只要通 ,用 就可以在 SQLPLUS   Oracle 开发 工具或第三方 开发 工具来 用运行。 Oracle 使用 EXECUTE   句来 实现对 储过 程的 用。  

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 实现 打印功能,多用于提示信息。 入命令 prompt tablename1  
tablename1 
PROMPT
  SQL*Plus   在屏幕上 写一行文字。你在 里使用了两个 PROMPT 命令; 个命令都在屏幕上打 印一个空行, 这对 于垂直 距很有好 ACCEPT 命令是等待用 户输 入一个置 换变 量的 ACCEPT 命令中可 PROMPT   子句在用 户输 入数 的同一行中 示了一条信息。你在 PL/SQL   的外面放置 PROMPT     ACCEPT   是正确的:他 SQL*Plus   命令,不是 PL/SQL    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值