存过及如何给变量赋值

####无参存过

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 有参存过的输入和输出参数都不可缺少

转载于:https://my.oschina.net/u/1590027/blog/742911

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值