Specifying Subprogram Parameter Modes
You use parameter modes to define the behavior of formal parameters. The three parameter modes are IN
(the default), OUT
, and IN
OUT
.
Any parameter mode can be used with any subprogram. Avoid using the OUT
and IN
OUT
modes with functions. To have a function return multiple values is a poor programming practice. Also, functions should be free from side effects, which change the values of variables not local to the subprogram.
Using the IN Mode
An IN
parameter lets you pass values to the subprogram being called. Inside the subprogram, an IN
parameter acts like a constant. It cannot be assigned a value.
You can pass a constant, literal, initialized variable, or expression as an IN parameter.
IN
parameters can be initialized to default values, which are used if those parameters are omitted from the subprogram call. For more information, see "Using Default Values for Subprogram Parameters".
<!-- class="sect3" -->
Using the OUT Mode
An OUT
parameter returns a value to the caller of a subprogram. Inside the subprogram, an OUT
parameter acts like a variable. You can change its value, and reference the value after assigning it:
Example 8-6 Using the OUT Mode
DECLARE
emp_num NUMBER(6) := 120;
bonus NUMBER(6) := 50;
emp_last_name VARCHAR2(25);
PROCEDURE raise_salary (emp_id IN NUMBER, amount IN NUMBER,
emp_name OUT VARCHAR2) IS
BEGIN
UPDATE employees SET salary = salary + amount WHERE employee_id = emp_id;
SELECT last_name INTO emp_name FROM employees WHERE employee_id = emp_id;
END raise_salary;
BEGIN
raise_salary(emp_num, bonus, emp_last_name);
DBMS_OUTPUT.PUT_LINE('Salary has been updated for: ' || emp_last_name);
END;
/
<!-- class="example" -->
You must pass a variable, not a constant or an expression, to an OUT
parameter. Its previous value is lost unless you specify the NOCOPY
keyword or the subprogram exits with an unhandled exception. See "Using Default Values for Subprogram Parameters".
Like variables, OUT
formal parameters are initialized to NULL
. The datatype of an OUT
formal parameter cannot be a subtype defined as NOT
NULL
, such as the built-in subtypes NATURALN
and POSITIVEN
. Otherwise, when you call the subprogram, PL/SQL raises VALUE_ERROR
.
Before exiting a subprogram, assign values to all OUT
formal parameters. Otherwise, the corresponding actual parameters will be null. If you exit successfully, PL/SQL assigns values to the actual parameters. If you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters.
<!-- class="sect3" -->
Using the IN OUT Mode
An IN
OUT
parameter passes initial values to a subprogram and returns updated values to the caller. It can be assigned a value and its value can be read. Typically, an IN OUT
parameter is a string buffer or numeric accumulator, that is read inside the subprogram and then updated.
The actual parameter that corresponds to an IN
OUT
formal parameter must be a variable; it cannot be a constant or an expression.
If you exit a subprogram successfully, PL/SQL assigns values to the actual parameters. If you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters.
<!-- class="sect3" -->
Summary of Subprogram Parameter Modes
Table 8-1 summarizes all you need to know about the parameter modes.
分享到:
相关推荐
aidl案例小分析 in out inout 自定义类型传输,主要针对aidl的客户端与服务端通信,先打开服务端,操作客户端,查看日志以及界面即可了解in out inout 区别,分析地址...语言较为混乱,java和kotlin kotlin都是简单的...
Android远程接口之AIDL——Parcelable、in、out、inout简例 Parcelable in out inout AIDL例子中体现使用方式 详细介绍: http://blog.csdn.net/yangzhaomuma/article/details/50576017
理解IN、Inout、Out这三种不同的输入输出参数类型以及Static和Temp变量的用法对于编写高效且可靠的PLC程序至关重要。 1. IN参数:IN类型的变量作为单向输入变量,它只能被程序块内部读取,而不能被写入。这意味着在...
1. inout 端口不可能独立存在:在设计 inout 端口时,需要注意到 inout 端口不能独立存在,必须与其他模块的 inout 端口相连。否则,可能会导致设计错误。 2. 作为输入必须有 reg 型缓冲:在设计 inout 端口时,...
本文将深入探讨如何使用Verilog语言来设计包含inout(双向)端口的程序,这对于理解数字系统间的数据交互至关重要。 首先,我们要明白Verilog中的三种基本端口类型:input、output和inout。input端口用于接收数据,...
在硬件描述语言Verilog中,双端口的inout接口是经常需要使用的一个功能,尤其在需要双向数据传输的场合。Verilog双端口中的inout端口,可以使得同一端口既能输出数据也能接收数据,类似于电子电路中的双向总线。在...
在电子设计自动化(EDA)领域,特别是在FPGA(Field-Programmable Gate Array)开发中,`inout`端口是一种特殊的I/O类型,用于处理双向通信。标题提到的“inout程序及其testbench的modelsim仿真”是针对FPGA设计的一...
Verilog语言中wire与reg的区别以及inout使用 Verilog语言是一种 Hardware Description Language(硬件描述语言),用于描述数字电路的行为。其中,wire和reg是两种基本的数据类型,它们之间的区别和使用场景非常...
Verilog inout 双向口使用和仿真,增加对CPLD的双向IO口的应用理解,结合电路实际原理来合理地编写和测试双向口的代码
---------索引中丢失in或out参数终极解决方案---------- 表现:提示的索引位置大于实际参数个数, 每次重启服务可以成功一次或几次, 之后短时间内全部失败. ---------祝各位工作愉快,全网首发,血泪史----------
Verilog中inout的使用 在Verilog中,inout是一种特殊的端口类型,既可以作为输入也可以作为输出。这种端口类型在设计中非常有用,特别是在需要同时输入和输出数据的情况下。 在Verilog中,inout端口的声明方式与...
在数字集成电路设计中,Inout双向端口是一个重要的概念,特别是在单片机和FPGA(现场可编程门阵列)的应用中。这种端口允许一个信号既可以作为输入也可以作为输出,从而有效地节省了硬件资源。然而,处理Inout端口...
标题“inout口modelsim仿真”指向了在使用ModelSim软件环境下对FPGA进行inout端口仿真的一系列步骤和方法。ModelSim是一款功能强大的仿真工具,广泛应用于硬件描述语言(HDL),如Verilog或VHDL编写的电子系统设计的...
### in.ref.out C#传值调用与引用调用 #### 概述 在C#编程语言中,方法参数的传递方式对理解程序的行为至关重要。根据传递的方式不同,方法内部的操作可能会影响方法外部的变量,也可能完全独立。本文将详细介绍C#...
func swap(inout a: Int, inout b: Int) { let temp = a a = b b = temp } ``` 在这个`swap`函数中,`a`和`b`都是In-Out参数。调用此函数时,需要使用`&`符号来表明我们将传入的是变量的引用,而不是其值。例如...
在Verilog中,双向端口(inout)是一种特殊类型的端口,它允许信号在模块的边界上同时作为输入和输出使用,这在硬件设计中非常常见,尤其是在节省芯片引脚资源的情况下。本文主要探讨如何在Verilog中有效地使用双向...
在MySQL中,存储过程的参数有三种类型:in、out、inout,它们分别对应不同的数据传递方式。 1. **in参数**: `in`参数类似于C语言中的值传递,它将外部变量的值传递到存储过程内部。在存储过程中,`in`类型的参数...
本篇文章将详细探讨如何在iBatis中调用Oracle的函数和存储过程,尤其是处理IN和OUT参数以及游标的场景。 首先,我们需要了解iBatis的基本工作原理。iBatis是一个SQL映射框架,它允许开发者将SQL语句写在XML配置文件...
### ASIC设计中基于Verilog语言的inout(双向)端口程序设计 #### 一、ASIC与Verilog语言概述 1. **ASIC简介**:ASIC(Application-Specific Integrated Circuit)是指为特定应用而设计的集成电路。它具有体积小、...