两个null参数都取不到默认值?系统时间和1000create 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 yuangong.salary%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) ;
(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 yuangong.salary%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) ;
---- -------- ---------- ----- ----------- -------- --------- --------
2 ss HE是个男的 18.0 2009-6-22 1500.00 2
1 yz 男 18.0 2009-6-22 1500.00 2 2
3 ff 男 16.0 2009-6-21 1500.00 2 3
4 s2 女 64.0 2009-2-4 1234.00 2 3
5 s3 女 14.0 2009-2-4 1234.00 2 3
6 fdfds 男 15.0 2009-12-12 4321.00 2 3
7 te 女 15.0 2009-12-12 4321.00 1 3
8 te 女 15.0 2009-12-12 4321.00 1 3
9 df x 13.0 2005-2-13 1233.00 2 1
10 tom nan 23.0 2 110 rows selected
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);
插入数据后没有commit,可能是这个原因,你可以试试!
(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 yuangong.salary%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',
........依次类推
)