Oracle数据库(十六):局部块和重载

局部块:在声明部分定义一个PROCEDURE或者FUNCTION,这个定义的块只能在当前块中使用;定义和使用的方法和之前没有却别,完全一样;


重载:同属于一个作用范围的多个程序使用的都是一个名字,那么这些名字就是重载的;(也就是说PROCEDURE和FUNCTION可以发生重载,只要他们的名字一样)。重载后,在调用的时候,会根据实际的参数列表和不同的重载模块的参数列表比较,寻找一个可以互相匹配的模块。

重载限制

  • 重载程序的参数中至少有一个是来自于不同的数据类型“家族”:比如INTEGER REAL、DECIMAL、FLOAT都是NUMBER的子类型,他们是同一个家族的;
  • 如果重载函数只是参数列表中的参数名字不同,调用时就必须使用命名表示法;
  • 不能仅靠参数列表中参数的模式来区别重载程序;
  • 所有重载程序必须在相同的PL/SQL作用范围内或者同一个块(匿名块、独立的过程或者函数、包)中定义;
  • 重载函数不能仅靠返回值的数据类型区分;

前置声明:先提前声明一个模块,然后再给出这个模块的定义;

如果A调用了B,B有调用了A,这种情况就无法在使用模块之前定义所有的模块,这个时候就要用到前置声明。

前置声明只是由程序头部以及一个跟在后面的(;)组成:例如:FUNCTION test() return number;

  • 不能对变量或者游标进行前置声明,这个技术只对模块有效(包括过程和函数);
  • 使用前置声明的程序的定义,必须位于前置声明所在的PL/SQL代码块(匿名块、过程、函数或者包体)的声明部分;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值