您好,请问存储过程如果参数没有in和out代表的是什么?如下所示

PROCEDURE pro_Payment_Audit(pBU number,pRegion number,pBILLDATE char,pResult out varchar2)
AS
begin

达令说
浏览 382回答 1
1回答

侃侃无极

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)asbeginopen 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) ISv_LocalVariable NUMBER;BEGINv_LocalVariable := p_InParameter; -- Legalp_InParameter := 7; -- Illegalp_OutParameter := 7; -- Legalv_LocalVariable := p_outParameter; -- Illegalv_LocalVariable := p_InOutParameter; -- Legalp_InOutParameter := 7; -- LegalEND ModeTest;/§16.2.2 使用过程存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle使用EXECUTE 语句来实现对存储过程的调用。EXEC[UTE] procedure_name( parameter1, parameter2…);例:CREATE PACKAGE emp_data ASTYPE 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 ASPROCEDURE get_staff (dept_no IN NUMBER,emp_cv IN OUT EmpCurTyp) ISBEGINOPEN emp_cv FORSELECT empno, ename, job, dname, loc FROM emp, deptWHERE emp.deptno = dept_no AND emp.deptno = dept.deptnoORDER BY empno;END;END;/COLUMN EMPNO HEADING NumberCOLUMN ENAME HEADING NameCOLUMN JOB HEADING JobTitleCOLUMN DNAME HEADING DepartmentCOLUMN LOC HEADING LocationSET AUTOPRINT ONVARIABLE cv REFCURSOREXECUTE emp_data.get_staff(20, :cv)-----------------------------------PROMPToracle 用 prompt实现打印功能,多用于提示信息。输入命令prompt tablename1;标准输出为tablename1PROMPT 告诉SQL*Plus 在屏幕上书写一行文字。你在这里使用了两个PROMPT命令;每个命令都在屏幕上打印一个空行,这对于垂直间距很有好处。ACCEPT命令是等待用户输入一个置换变量的值。ACCEPT命令中可选的PROMPT 子句在用户输入数值的同一行中显示了一条信息。你在PL/SQL 块的外面放置PROMPT 和 ACCEPT 是正确的:他们是SQL*Plus 命令,不是PL/SQL 。
打开App,查看更多内容
随时随地看视频慕课网APP