PL/SQL编译器有2种方法可以将实参传递给子程序:
n 引用传递,编译器传递给子程序实参的指针,实参和形参引用相同的内存分配。
n 值传递,编译器将实参的值赋值给形参,实参和形参引用不同的内存分配。
如果需要,编译器隐式地转换实参的数据类型到形参的数据类型。
为了避免隐式转换,可以采用下面的方法:
n 声明你想做为实参的变量与形参具有相同的数据类型。
n 显式地将实参转换为对应形参的数据类型。
|
-- 避免隐式转换 CREATE OR REPLACE PROCEDURE p (n NUMBER) IS BEGIN NULL; END; /
DECLARE x NUMBER := 1; y VARCHAR2(1) := '1'; BEGIN p(x); -- 不需要转换,因为类型相同 p(y); -- 隐式转换 p(TO_NUMBER(y)); -- 显式转换 END; |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1131973/ ,如需转载,请注明出处,否则将追究法律责任。