又拿起plsql在看了,看到过程这一部分。procedure的参数有三种模式:int,out,in out.如果不声明的话,默认的是in。以前在学校老师讲编译原理的时候经常提到左值和右值,现在在plsql里又遇到这种称呼了。in模式的值是左值,read-only的。out模式的值是右值的write-only.in out模式则是两种的融合了。写个例子
再写个测试的例子:
书上说如果往in值里面写东西,或者读out值编译过程的时候会报错,我在我本机按这种写法不会报错,但调用过程的时候会报错。
读out的值读出来是空,输出什么都没有。
create or replace procedure ModeTest(
inParameter in number,
outParameter out number ,
inOutParameter in out number) is
localVariable number ;
begin
localVariable :=inOutParameter;
inOutParameter:=2500;
--outParameter := 100;
dbms_output.put_line(outParameter);
end ModeTest;
再写个测试的例子:
declare
inParameter number :=10;
outParameter number :=20;
inOutParameter number :=30;
begin
ModeTest(inParameter,outParameter,inOutParameter);
dbms_output.put_line(inOutParameter);
end;
书上说如果往in值里面写东西,或者读out值编译过程的时候会报错,我在我本机按这种写法不会报错,但调用过程的时候会报错。
读out的值读出来是空,输出什么都没有。