oracle存储过程书写格式

来源:这里教程网 时间:2026-03-03 15:56:11 作者:

创建存储过程 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版本

相关推荐