首页 >> 租房准备

请问这个存储过程为什么不取默认值覆盖

2021-09-06 来源:临清租房网

请问这个存储过程为什么不取默认值?

两个null参数都取不到默认值?系统时间和1000

create or replace procedure addyuangong2

《更好的世界》由来自于丹麦的女电影人苏珊娜·比尔自编自导 (sid in number,

sname in varchar2,

ssex in varchar,

sage in number,

shiredate date default sysdate,

ssalary in number default 1000,

sleaderid number,

sgroupid number

)is

o_ssalary lary%type;

procedure check_sal(sal in out number)is

begin

if sal 1000 then

sal:=1000;

end if;

end check_sal;

begin

o_ssalary:=ssalary;

check_sal(o_ssalary);

insert into yuangong(id ,name,sex ,age,hire_date,salary,leader_id,group_id) values(sid,sname,ssex,sage,shiredate,ssalary,sleaderid,sgroupid);

end addyuangong2;

exec addyuangong2(10,\'tom\',\'nan\',23,null,null, 2,1) ;

存储过程编译都没报错啊

SQL exec addyuangong2(10,\'tom\',\'nan\',23,null,null, 2,1) ;

PL/SQL procedure successfully completed

SQL select * from yuangong;

ID NAME SEX AGE HIRE_DATE SALARY LEADER_ID GROUP_ID

---- -------- ---------- ----- ----------- -------- --------- --------

2 ss HE是个男的 18.0 1500.00 2

1 yz 男 18.0 1500.00 2 2

3 ff 男 16.0 1500.00 2 3

4 s2 女 64.0 1234.00 2 3

5 s3 女 14.0 1234.00 2 3

6 fdfds 男 15.0 4321.00 2 3

7 te 女 15.0 4321.00 1 3

8 te 女 15.0 4321.00 1 3

9 df x 13.0 1233.00 2 1

10 tom nan 23.0 2 1

10 rows selected

把存储过程的参数都显式的标为 in

shiredate in date default sysdate,

sleaderid in number,

sgroupid in number

insert into yuangong(id ,name,sex ,age,hire_date,salary,leader_id,group_id) values(sid,sname,ssex,sage,shiredate,o_ssalary,sleaderid,sgroupid);

SQL codecreate or replace procedure addyuangong2

(sid in number,

sname in varchar2,

ssex in varchar,

sage in number,

shiredate date default sysdate,

ssalary in number default 1000,

sleaderid number,

sgroupid number

)is

o_ssalary lary%type;

procedure check_sal(sal in out number)is

begin

if sal 1000 then

sal:=1000;

end if;

end check_sal;

begin

o_ssalary:=ssalary;

check_sal(o_ssalary);

insert into yuangong(id ,name,sex ,age,hire_date,salary,leader_id,group_id) values(sid,sname,ssex,sage,shiredate,ssalary,sleaderid,sgroupid);

end addyuangong2;

exec addyuangong2(10,\'tom\',\'nan\',23,null,null, 2,1) ;

调用过程时,对其参数的输入有3中方式:1.名称表示法,2.位置表示法,3.混合表示法。

1、如果你想用某个参数字段的默认值,那么你应该把要使用默认值的参数都定义在过程的最后。

2、可以用名称表示法,对过程进行参数的赋值。

如:addyuangong2

(sid=\'10\',

sname=\'tom\',

........依次类推

)

榆林哪里专业治白癜风
成都较好的不孕不育医院
华润江中