查看: 4753|回复: 4

谁给讲讲PL/sql中的形参和实参区别吗?

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
跳转到指定楼层
1#
发表于 2002-11-27 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁给讲讲PL/sql中的形参和实参区别吗?
在讲CURSOR时,书上说需要为open语句定义的每个参数定义一个形式参数,怎么理解?谢了
论坛徽章:
0
2#
发表于 2002-11-27 14:36 | 只看该作者
自己的体会
形参(formal parameters)是指程序参数的名字和类型. 举例如下:
  function departments (dept_id IN number, dept_name IN varchar2)
  return number;
这里dept_id 和 dept_name 就是形参. 它们不仅有名, 而且有参数类型, 但是没有具体的值. 当程序调入内存时, 形参占据了一定的空间地址. 应此形参又叫内存占位体(place holder). 如果程序被其他程序使用:
   empployee_number := departments(23, 'Computer Sciences');
23 和 Physics 就是实参. 它们是形参的具体值, 在内存中的地址就是形参指定的地址. 实参可以是某个特定值, 关系式, 地址指针或者绑便量(bind variable like :dept_number).
形参和实参的关系有二种, 位置型和名字型. 前面举例用的是位置型, 也就是第一个形参对应于的一个实参, 第二个形参对应于第二个实参. 下面的是名字型例子:
   employee_number := departments(dept_id => 23, dept_name => 'Computer Sciences');
这里 => 是结合符号, 它把一个实参直接赋予形参. 名字型的好处在于不必考虑参数的位置,而且参数名和值一目了然 . 位置型和名字型可以混合使用, 但必须把位置形参数放在前面. 举例如下:
   employee_number := departments('Computer Sciences', dept_id => 23);
对于行指针(cursor)来说, 其形参和实参的定义是一样的. 举例如下:
  cursor dept_cur (dept_id IN number, dept_name) return number;
这是在pakage header 里cursor的定义. 使用行指针时,
  open cursor dept_cur(23, 'Computer Sciences');
23 和'Computer Sciences'就成了实参.

仅供参考.

使用道具 举报

回复
论坛徽章:
0
3#
发表于 2002-11-27 14:37 | 只看该作者
自己的体会
形参(formal parameters)是指程序参数的名字和类型. 举例如下:
  function departments (dept_id IN number, dept_name IN varchar2)
  return number;
这里dept_id 和 dept_name 就是形参. 它们不仅有名, 而且有参数类型, 但是没有具体的值. 当程序调入内存时, 形参占据了一定的空间地址. 应此形参又叫内存占位体(place holder). 如果程序被其他程序使用:
   empployee_number := departments(23, 'Computer Sciences');
23 和 Physics 就是实参. 它们是形参的具体值, 在内存中的地址就是形参指定的地址. 实参可以是某个特定值, 关系式, 地址指针或者绑便量(bind variable like :dept_number).
形参和实参的关系有二种, 位置型和名字型. 前面举例用的是位置型, 也就是第一个形参对应于的一个实参, 第二个形参对应于第二个实参. 下面的是名字型例子:
   employee_number := departments(dept_id => 23, dept_name => 'Computer Sciences');
这里 => 是结合符号, 它把一个实参直接赋予形参. 名字型的好处在于不必考虑参数的位置,而且参数名和值一目了然 . 位置型和名字型可以混合使用, 但必须把位置形参数放在前面. 举例如下:
   employee_number := departments('Computer Sciences', dept_id => 23);
对于行指针(cursor)来说, 其形参和实参的定义是一样的. 举例如下:
  cursor dept_cur (dept_id IN number, dept_name) return number;
这是在pakage header 里cursor的定义. 使用行指针时,
  open cursor dept_cur(23, 'Computer Sciences');
23 和'Computer Sciences'就成了实参.

仅供参考.

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
4#
 楼主| 发表于 2002-11-28 10:49 | 只看该作者
谢谢jzhou的清晰讲解

使用道具 举报

回复
论坛徽章:
0
5#
发表于 2012-5-3 15:31 | 只看该作者
谢谢jzhou!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表