--创建表
create table aaa(id int,key varchar(12),age int);
insert into aaa(id ,key ,age) values (12,'key',24);
commit;
select * from aaa;
----oracle存储过程中is和as区别
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
在视图(VIEW)中只能用AS不能用IS;
在游标(CURSOR)中只能用IS不能用AS。--------
--一、创建存储过程1
create or replace procedure a1 is --这里is、as都可以,但必须有,是结构的一部分
begin
insert into aaa(id ,key ,age) values (12,'key',102);
end a1;
--执行存储过程
call a1();
--二、创建带参存储过程2
create or replace procedure a2
(id in number,
key in varchar,
age in number,
stravg out varchar) is ----这里is、as都可以,但必须有,是结构的一部分
begin
insert into aaa(id ,key ,age) values (3,'key',103);
end a2;
--三、创建存储过程--带内部参数3
create or replace procedure a1 is
id number(5) := 0;--内部参数
key varchar(12) := 'wek';
age number(5) := 100;
begin
insert into aaa(id ,key ,age) values (12,'key',age);
end a1;
--四、创建带参存储过程--带内部参数4
create or replace procedure a2
(id in number,
key in varchar,
age in number,
stravg out varchar) as --as必须有,是结构的一部分
v_str_avgage varchar(10) := null;--内部参数
begin
insert into aaa(id ,key ,age) values (3,'key',101);
select avg(age)into v_str_avgage from AAA;
dbms_output.put_line('我喜欢你');
--dbms_output.put_line('v_str_avgage='+v_str_avgage); --这样写执行不成功
dbms_output.put_line('v_str_avgage=');
dbms_output.put_line(v_str_avgage);
end a2;
----------------------------------------------------------------------------触发器----------------------------------------------
create table aaa_log(id int,key varchar(12),age int);
delete aaa where id='2'
select t.*,t.rowid from aaa_log t;
select t.*,t.rowid from aaa t;
--一、创建触发器
create or replace trigger t1
before delete on aaa
for each row
declare --可有可省略
begin
insert into aaa_log(id ,key ,age) values (:old.id ,:old.key ,:old.age);
end;
--二、创建触发器
create or replace trigger t2
before update on aaa
for each row
begin
update aaa_log set age=age+1 where id=:new.id;
end;
update aaa set id=1 where key='key3';