暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle数据库高级编程(六)

超人网页作坊 2020-03-10
268

oracle数据库高级编程(六)

1.存储过程

--创建或替换一个存储过程,in只读,out只写,in out可读可写,默认情况是in

--如果是in即不可以bg:=x;不能赋值。


CREATE OR REPLACE PROCEDURE cg1(x NUMBER,y NUMBER,bg out NUMBER)

iS

BEGIN 

IF x > y THEN

  bg:=x;

  ELSE bg:=y;

END IF;

END; 

DROP PROCEDURE cg1;


--调用存储过程cg1,声明变量用来接受赋值后的bg

DECLARE

big NUMBER;

BEGIN

  cg1(20,30,big);

  dbms_output.put_line(big);

END;  



2.创建定时任务

--创建一个空表

CREATE TABLE test0(

tid NUMBER PRIMARY KEY,

NAME VARCHAR2(10) NOT NULL

);

--创建一个序列

CREATE SEQUENCE tes0;


--创建一个存储过程,若不带参数则不用括号cu0()

CREATE OR REPLACE PROCEDURE cu0

IS 

BEGIN

  INSERT INTO test0 VALUES(tes0.nextval,'测试'||tes0.currval);

  END;

  

--创建一个定时任务隔10秒往test0中插入一条数据

--参数一:任务编号只能是整型,且是系统生成的所以要声明变量去接住如:tid

--参数二:存储过程必须要加();且是varchar类型的所以要'();'

--参数三:任务开始执行的时间是date类型

--参数四:任务执行的相隔时间,可以用sysdate-1的形式,这里减一是一天的意思,如果要小时就是1/24,分钟1/(24*60),秒就是1/(24*60*60),是varchar类型

DECLARE

tid BINARY_INTEGER;

BEGIN 

  --这里是相隔10秒执行一次

  dbms_job.submit(tid,'cu0();',SYSDATE,'sysdate + 10/(24*60*60)');

  --执行任务

  dbms_job.run(tid);

  END;

  

--查看是否10s增一条数据

SELECT * FROM test0 FOR UPDATE;  


--移除任务,可以在dbms_jobs中看到自己的任务编号

BEGIN

  dbms_job.remove(23);

  END;





3.创建函数


/*创建一个函数,并声明函数返回值的类型,

如果函数中X需要在函数过程中赋值,

加上hss(x number in out)

*/

CREATE OR REPLACE FUNCTION hss(x NUMBER) RETURN VARCHAR2

AS

BEGIN

  IF x >10 THEN

    RETURN '此时X大于10';

    ELSE RETURN '此时X小于10';

      END IF;

  END;

  

--调用函数并给函数传值

DECLARE

BEGIN

  dbms_output.put_line(hss(9));

  END;







数据库编程未完待续
更多精彩推荐,请关注我们




文章转载自超人网页作坊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论