####无参存过
create or replace procedure init_Income_EveMonth is
begin
-- Created on 2016/9/6 by YANGQC
--每月初始化薪资表
declare
cursor salesset is
select s.user_id,to_char(sysdate,'yyyy-mm') month
from sys_salesman s
left join sys_user u on s.user_id = u.user_id
where u.status = 0
and not exists (select 1
from sys_income_main m
where m.month = to_char(sysdate,'yyyy-mm')
and m.user_id = s.user_id);
salary Integer;
begin
for salesman in salesset loop
select nvl((select b.salary
from sys_income_basicsalay b
where b.user_id = salesman.user_id
and b.flag = 0),0)
into salary
from dual;
insert into sys_income_main m
(m.id,USER_ID,month,BASIC_SALARY,ALLRESULT)
values
((select max(m1.id) + 1 from sys_income_main m1),salesman.user_id,salesman.month,salary,salary);
end loop;
commit;
end;
end init_Income_EveMonth;
上面是一个无参存过;
使用into给参数salary赋值,这个只适用于select语句查询出结果的情况;
存过格式如下:
create or replace procedure xxx
begin
end xxx;
####有参存过
create or replace procedure test_parameter(emp_name in varchar2,dept_no out number ) is
begin
dept_no:=2;
end test_parameter;
这个存过定义了输入和输出参数 测试该存过
-- Created on 2016/9/6 by YANGQC
declare
-- Local variables here
i integer:=20;
x varchar2(20);
begin
test_parameter(x,i);
dbms_output.put_line('After swap: x = ' || x || ',i= ' ||i);
end;
输出结果:After swap: x =,i= 2 有参存过的输入和输出参数都不可缺少
总结
以上是编程之家为你收集整理的存过及如何给变量赋值全部内容,希望文章能够帮你解决存过及如何给变量赋值所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。