oracle 常用知识集锦
《PL/SQL编程》
/*procedural language/sql*/
--1、过程、函数、触发器是pl/sql编写的
--2、过程、函数、触发器是在oracle中的
--3、pl/sql是非常强大的数据库过程语言
--4、过程、函数可以在java程序中调用
--提高效率:优化sql语句或写存储过程
--pl/sql移植性不好
--IDE(Integration Develop Environment)集成开发环境
--命令规则:
--变量(variable) v_
--常量(constant) c_
--指针、游标(cursor) _cursor
--例外、异常(exception) e_
--可定义的变量和常量:
--标量类型:scalar
--复合类型:composite --存放记录、表、嵌套表、varray
--参照类型:reference
--lob(large object)
《PL/SQL 基本语法》
--例:创建存储过程
create or replace procedure pro_add
is
begin
insert into mytest values('韩xx','123');
end;
exec pro_add; --调用
--查看错误信息
show error;
--调用过程
exec 过程(c1,c2,...);
call 过程(c1,c2,...);
--打开/关闭输出选项
set serveroutput on/off
--输入
&
--块结构示意图
declare --定义部分,定义常量、变量、游标、例外、复杂数据类型
begin --执行部分,执行pl/sql语句和sql语句
exception --例外处理部分,处理运行的各种错误
end; --结束
--《实例演示》
declare
v_ival number(4) :=100; --声明并初始化变量
--v_dtm date;
v_dtm syslogs.dtm%type; --取表字段类型
v_content varchar(512);
begin
v_ival := v_ival * 90; --赋值运算
insert into syslogs values(seq_syslogs.nextval,10,sysdate,'v_ival='||v_ival,user);--数据库存储
dbms_output.put_line('v_ival'||v_ival);
select count(*) into v_ival from syslogs;--使用select查询赋值
--select ename,sal into v_name,v_sal from emp where empno=&aa;
insert into syslogs values (seq_syslogs.nextval,10,sysdate,'日志条数='||v_ival,user);
dbms_output.put_line('日志条数'||v_ival);
--获取日志序号==11的日志时间和日志内容
select dtm , content
into v_dtm,v_content
from syslogs
where logid=14;
insert into syslogs values (seq_syslogs.nextval,'10',sysdate,'v_dtm='||v_dtm||'v_content='||v_content,user);
dbms_output.put_line('v_dtm='||v_dtm||'v_content='||v_content);
--修改日志序号=11的日志记录人
update syslogs
set whois='PL/SQL.'||v_ival
where logid = 14;
--delete syslogs where logid=15;
--分支流程控制
if v_ival>50 then
dbms_output.put_line('日志需要清理了~');
else
dbms_output.put_line('日志空间正常!');
end if;
--Loop循环
v_ival :=0;
loop
exit when v_ival>3;
--循环体
v_ival := v_ival+1;
dbms_output.put_line('loop循环:'||v_ival);
end loop;
--While循环
v_ival := 0;
while v_ival < 4
loop
--循环体
v_ival := v_ival+1;
dbms_output.put_line('while循环:'||v_ival);
end loop;
--For循环
for v_count in reverse 0..4 loop --reverse递减
dbms_output.put_line('for循环:'||v_count);
end loop;
commit;--提交事物
end;
select * from sysl