ITPub博客

首页 > 数据库 > Oracle > oracle存储过程书写格式

oracle存储过程书写格式

原创 Oracle 作者:jianghongrun 时间:2020-07-06 14:27:08 1 删除 编辑


创建存储过程

CREATE OR REPLACE PROCEDURE 存储过程名字 

(参数1(入参) IN NUMBER,

参数2(出参) OUT DATE,

参数3(入参,出参) IN OUT NUMBER)

AS

变量1 VARCHAR2 (100);

变量2 NUMBER;

变量3 DATE;

BEGIN

变量1 := TO_CHAR (sysdate - 1, 'yyyymmdd');

变量2 := 

变量3 := 

select first_name,phone_number into 参数2,参数3 from employees where employee_id=参数1;

update employees set salary=salary+参数3 where first_name=参数1;

commit;

dbms_output.put_line(参数1||'的工资已经增加了'||参数2||'!');

insert into MFUND.T_TRADEACCO_FEE_DETAIL (manager_code,tacode) SELECT D.manager_code,D.tacode 

FROM xnsale.T_FAFS_TRADEACCO_FEE_DETAIL@xnsale D WHERE D.SHARE_DATE = '变量1';

commit;

END 存储过程名字;


===========================================================================


执行存储过程

declare 

参数1 number;

参数2 employees.first_name%type;

参数3 employees.phone_number%type;

begin

参数1:=102;

存储过程名字(参数1,参数2,参数3);

dbms_output.put_line('员工号为'||参数1||'的员工姓名是;'||参数2||',联系电话是:'||参数3);

end;


TO_CHAR (sysdate, 'yyyy-mm-dd')

TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss')


===========================================================================


创建计划任务

create or replace PROCEDURE SP_CREATE_JOBS

IS

    myjob       number :=0;

    job_record  user_jobs%ROWTYPE;

BEGIN

/*

  2020/06/29 jhr 添加 MFUND.T_TRADEACCO 每日insert数据存储过程

  2020/06/29 jhr 添加 MFUND.T_TRADECONFIRM 每日insert数据存储过程

*/

    FOR job_record IN (SELECT job

                FROM USER_JOBS

                WHERE what in ('SP_INSERT_T_TRADEACCO;', 'SP_INSERT_T_TRADECONFIRM;') ) LOOP

        sys.dbms_job.remove(job_record.job);

    END LOOP;


    myjob := 0;

    sys.dbms_job.submit(myjob,'SP_INSERT_T_TRADEACCO;',TRUNC(SYSDATE) + 15/24,'TRUNC(SYSDATE + 1) + 3/24');

    sys.dbms_job.submit(myjob,'SP_INSERT_T_TRADECONFIRM;',TRUNC(SYSDATE) + 15/24,'TRUNC(SYSDATE + 1) + 3/24');

    commit;


END;


注释:

    sys.dbms_job.submit(myjob,'SP_INSERT_T_TRADECONFIRM;',TRUNC(SYSDATE) + 15/24,'TRUNC(SYSDATE + 1) + 3/24');

    sys.dbms_job.submit(myjob,'存储过程名;',首次执行时间,'执行间隔时间');


首次执行时间和执行时间间隔参考如下:

TRUNC(SYSDATE + 1)   --明天0点

TRUNC(SYSDATE + 1) + (3*60+30)/(24*60)   --明天早上三点半

TRUNC(SYSDATE)+ 15/24   --今天下午三点

'SYSDATE + 30/(60*24*60)'   --每30秒运行一次

'SYSDATE + 1'   --每天运行一次

'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'   --每星期二中午12点

'TRUNC(LAST_DAY(SYSDATE ) + 1)'   --每个月第一天的午夜12点


V1.0_20200706版本

V2.0_20200803版本


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69976145/viewspace-2702702/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-06-01

  • 博文量
    7
  • 访问量
    4154