变量为什么要分开在头部和is部分两个地方声明呢?

create or replace procedure change_sal( v_ename in varchar2, v_sal in number, v_job out varchar2, v_dname out varchar2)is v_empno emp.empno%type;begin ... ...end;变量为什么要分开在头部和is部分两个地方声明呢?有什么本质的区别吗?

 

开头部分声明的是这个存储过程的参数,is部分声明的是存储过程内部使用的变量。相当于程序中函数的参数和函数的内部变量的关系。

 

前边几个是变量,就是in out那一堆相当于你输入和输出的参数,而且输入和输出的参数只能每次调用一个一个输入参数你不可能一下输入两个下边is后边那个%TYPE属性 在PL/SQL中可以将变量和常量声明为内建或用户定义的数据类型,以引用一个列名,同时继承他的数据类型和大小。这种动态赋值方法是非常有用的,比如变量引用的列的数据类型和大小改变了,如果使用了%TYPE,那么用户就不必修改代码,否则就必须修改代码。例: v_empno SCOTT.EMP.EMPNO%TYPE; v_salary EMP.SALARY%TYPE; 不但列名可以使用%TYPE,而且变量、游标、记录,或声明的常量都可以使用%TYPE。这对于定义相同数据类型的变量非常有用。其实说白了,就是后边is定义的那个已经不是常规的变量了,相当于一个数组或者游标

---以上,希望对你有所帮助。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值