模块中的参数问题
来源:互联网 发布:金庸 知乎 过时 编辑:程序博客网 时间:2024/06/06 03:13
一、定义参数
在模块头部定义参数
如:procedure proc_name(para_name in datatype [{:=value | default value}] [, ...])
1、para_name为参数名
2、in 为参数模式,参数模式有in,out,in out
3、datatype为数据类型,该数据类型不受约束,也即只有数据类型的名称,不能有数据长度,如:varchar2。
4、:=value 为参数的默认值,也可以使用default value定义默认值。
二、形参和实参
形参为在模块头部的参数列表中声明的参数的名称。
实参为在调用模块时放置在参数列表中的真实值或者表达式。
形参只能存在于模块中,可以把形参看做占位符,在执行模块时,实参将替换形参。
形参和对应的实参的数据类型必须能够兼容。
三、参数模式
1、in
只能通过in模式的参数向模块传入数据,但不能通过in模式的参数传出数据。
模块可以读取in模式参数的值,不能修改参数的值。
in模式为默认的参数模式,如果不写即为in模式参数。
可以使用:=或者default为in模式参数定义初始值。
in模式参数对应的实参可以使变量,常量,直接值,或者表达式。
2、out
out模式为只写,可以通过out模式参数,模块向调用程序传出数据,模块可以修改out模式参数的数值,但不能读取参数的值。
out模式参数在模式成功结束之前,没有任何值(除非使用nocopy提示),在模块的执行过程中,针对out模式参数所做的任何赋值,实际上都是在对一个副本进行操作。在模
块成功执行之后,这个副本的值才会真正传递给out模式参数。
规则:不能把out模式参数的值赋值给其他变量
不能为out模式参数提供初始值
如果模块执行异常,任何对out模式参数的赋值操作都会被回滚。(可以在异常处理中为参数赋值)
对应于out模式参数的实参只能是变量。
3、in out
in out模式的参数是可读可写的。
通过in out模式的参数,可以为模块传入数据,也可以为调用程序传出数据。
规则:不能为in out模式的参数设置初始值
与in out模式参数对应的实参只能是变量
四、实参与形参的映射的方法
1、位置表示法
在调用模块时,根据参数的位置进行关联。也即第n个实参对应第n形参。
2、命名表示法
使用‘=>'连接符显示地把实参和形参建立关联。
使用命名表示法可以不按照形参的顺序
当有默认值的形参处于没有默认值的形参之间,且又想不写该参数的实参,使用其默认值时,要使用命名表示法
3、混合法
既包含位置表示法,又有命名表示法
命名表示法,可以不按照形参的顺序,但使用位置表示法的实参必须与形参的位置相对应。
五、初始值
可以为in模式的参数定义初始值,不能为out和in out模式的参数定义初始值。
使用':='或者default为参数定义初始值
在调用模块时,如果没有有初始值的参数提供实参,则该参数使用默认值。
- 模块中的参数问题
- Models模块中的参数说明
- python中的模块问题
- Java中的参数问题
- python中的time模块相关参数
- python中的argparse模块(参数解析)
- python中的argparse模块(参数解析)
- python中的argparse模块(参数解析)
- STL 作为参数 跨模块调用 问题
- python subprocess模块的shell参数问题
- 小心ReleaseByteArrayElements 中的参数问题
- java中的参数传递问题
- 请求参数中的乱码问题
- php中的参数传递问题
- java中的参数传递问题
- 方法中的参数的问题
- switch中的参数类型问题
- url参数中的乱码问题
- Berkeley DB 源代码分析 (5) --- 事务锁模块
- Berkeley DB 源代码分析 (6) 缓存模块
- android LinearLayout设置selector不起作用解决
- Berkeley DB 源代码分析 (7) --- 事务和日志 (2)
- WebCore目录结构
- 模块中的参数问题
- Berkeley DB 列存储设计方案
- 数据库的启动与关闭
- 可恢复的空间分配
- Berkeley DB 源代码分析 --- 小结
- Android学习第18课—ContentProvider初步
- 部署Vista – 第19部分:管理Windows部署服务(续)
- 部署Vista – 第18部分:管理Windows部署服务
- 方正XML数据库设计与实现---开篇