oracle的存储过程,视图,触发器小例子

建表BB表

create table BB

(

  id            NUMBER,

  short_name    VARCHAR2(500),

  stantding_code VARCHAR2(500),

  plan_value    NUMBER,

  all_invest    NUMBER,

  base_id       NUMBER,

  tj_base_id    NUMBER

);

插入数据

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (1, '   海阳核废料处置场项目', '2007-033-ZHD-QT-X', 106,10000, 111111606268, 111111606268);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (2, '   江西上犹仙鹅塘二期50兆瓦风电场项目','2015-097-JXF-ZSf-X', 200, 42912, 211113037230, 211113037230);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (3, '   安徽田集二期扩建项目', '2003-011-SHD-HD-K', 3000,468415, 111111198253, 111111198253);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (6, '   广西白龙及桂东核电项目', '2003-019-ZHD-ND-X', 13049,3500000, 111111198049, 111111198049);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (7, '   吉林赤松核电项目', '2003-020-CPI-ND-X', 2100,3500000, 211111638573, 111111198089);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (8, '   贵州白市水电项目', '2003-021-WLD-SD-X', 31000,698800, 111111198274, 111111198274);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (9, '   青海积石峡水电站项目', '2004-013-HHS-SD-X', 18974,721737, 111111198113, 111111198113);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (10, '   青海班多水电站项目', '2004-015-HHS-SD-X', 0, 259699,111111198103, 111111198103);

insert into BB (id, short_name, stantding_code, plan_value,all_invest, base_id, tj_base_id)

values (11, '   重庆涪陵核电项目', '2004-017-CPI-ND-X', 5000, 0,111111198067, 111111198067);

建存储过程

CREATEORREPLACEPROCEDURE EMP

AS

V_TOTALNUMBER(10);

BEGIN

 SELECTCOUNT(*)INTO V_TOTAL FROM BB;

 DBMS_OUTPUT.PUT_LINE('雇员总人数为:'||V_TOTAL);

END;

运行

Set serveroutputon;

Executeemp();

2存储过程

createorreplaceprocedure zonghechaxun (

                            isal in BB.plan_value%type,

                            sjob invarchar)

  as icount number;

   begin

       selectcount(*)into icount from BB where plan_value > isal and stantding_code =sjob;

       DBMS_OUTPUT.PUT_LINE('符合条件的记录有 '|| icount ||'条');

  exception

      when too_many_rows then

      DBMS_OUTPUT.PUT_LINE('返回值多于1行');

      whenothersthen

      DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');

  end;

运行

Setserveroutput on;

Execute zonghechaxun(1,2003-011-SHD-HD-K);

创建视图

CREATEOR REPLACE VIEW SBB_VIEW AS

SELECTplan_value,AVG(ALL_INVEST) AVERAGE_SCORE FROM BB

GROUPBY plan_value;

创建触发器

CREATEOR REPLACE TRIGGER SBB_VIEW_DELETE

INSTEADOF DELETE ON SBB_VIEW

FOREACH ROW

BEGIN

  DELETE FROM BB WHEREPLAN_VALUE=:OLD.PLAN_VALUE;

ENDSBB_VIEW_DELETE;

运行删除视图中的分组

Delete from BB where plan_value=0;

原本视图是不能删除的,加了触发器之后就能删除了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值