通过sqlplus连接oracle及配置相关操作
1.sqlplus
name/ password [as sysdba]
2.进入sqlplus后: SQL> startup
3.shutdown immediate; //关闭数据库 (OR "dbshut" command)
4. define _editor=vi
5.set serveroutput on
6. clear screen
7.edit
8. /
运行
pl/sql 基础结构
declare
变量名 变量类型;
申明基本变量
var
name varchar2(32);
var
age number:=22;
申明数组变量
类似于高级语言的数组
TYPE
tabletype IS TABLE OF
type_name INDEX BY BINARY_INTEGER ;
申明record
类似于高级语言的结构体
TYPE record_name
IS RECORD(
field1 type1
field2 type2 );
申明一表结构类型变量
v_rowtype
TABLE_NAME%ROWTYPE ;
申明一游标变量
Type
sp_cursor is ref cursor; --定义一个游标类型
CURSOR
cur_name IS ‘select …..
‘
Begin
Open cur_name;
….
Close cur_name;
End;
declare
cursor emp_cur is
select first_name from s_emp ;
v_first varchar2(32);
begin
open emp_cur;
while emp_cur%notfound=false loop
fetch emp_cur into v_first;
dbms_output.put_line(v_first);
end loop;
close emp_cur;
end;
/
申明一异常
e_name
exception;
pragma
exception_init(e_child_found,-2292);
begin
exception
格式
抛出异常: raise
exception_name;
exception
when
exception_name then
dosth
…. ;
eg:
when
dup_val_on_index then
dbms_output.put_line('dup val on index');
when
e_child_found then
dbms_output.put_line('e_child_found is raised');
when
e_custom then
dbms_output.put_line('e_custom is raised');
end
条件
if
if v_name is null then -- bool 表达式
…. ;
for
for var in CursorName loop
var.columnName
… ;
end loop;
while
while bool 表达式 loop
end loop;
fetch ** into
**
function
create or replace function fun2 (p_id number)
return number
is
ss
number;
begin
select
salary into ss from s_emp
where
id = p_id;
return
ss;
end;
trigger
create or replace trigger tri_test2
before insert on t_test
for each row
declare
begin
select seq_test.nextval into :new.id
from dual;
end;
sequence
-- Create sequence
create sequence SEQ_TEST
minvalue 0
maxvalue 999
start with 21
increment by 1
cache 20;
存储过程
create or replace procedure
pro_create_table
is
begin
execute immediate
'create table pro_table ( id number primary key)';
end ;
create or replace procedure proc_inout
(p_in varchar2 , p_out out varchar2 ,
p_inout in out varchar2)
is
v
varchar2(10);
begin
v
:= p_in;
p_out := p_in||'out';
p_inout := p_inout||'inout';
dbms_output.put_line(p_out||p_inout);
end;
包
用于在逻辑上组合过程和函数,(类似于接口)
Create package pk_name as
Procedure
procedureName(arg type);
Function
fun_name(arg type) return number;
End;
包体
Create package body body_name
is
Procedure
p_name(arg type)
Is
Begin
….
End;
Function
f_name(arg type) return number
Is
V_number number;
Begin
…
End;
End;
返回结果集的过程
1.创建一个包,定义一个游标
Create or replace package test as
Type
test_curosr is ref cursor;
End test;
2.创建过程
Create or replace procedure p_test
(arg number,arg2
out test.test_cursor)
Is
Begin:
Open
arg2 for select …..;
Execute
immediate sql into v_cout;
End;
3.在java中调用
CallableStatemt cs = conn.prepareCall(“{call p_test(?,?)}”);
Cs.registerOUtputParameter(2,OracleType.Cursor);
Cs.execute();
//获取结果集
ResultSet rs = (resultset)cs.getObject(2);
job
创建测试表
SQL>
create table test(id number,cur_time date);
表已创建。
建sequence
CREATE
SEQUENCE test_sequence
INCREMENT
BY 1
-- 每次加几个
START
WITH 1
-- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE
10 ;
建触发器
create or replace trigger tri_test_id
before insert on test --test 是表名
for
each row
declare
nextid number;
begin
IF
:new.id IS NULLor :new.id=0 THEN --id是列名
select test_sequence.nextval --SEQ_ID正是刚才创建的
into nextid
from sys.dual;
:new.id:=nextid;
end
if;
end tri_test_id;
创建一个自定义过程
SQL>
create or replace
procedure proc_test as
2 begin
3 insert into
test(cur_time) values(sysdate);
4 end;
5 /
过程已创建。
创建JOB
SQL> declare job1 number;
begin
dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
end;
PL/SQL JOB已成功完成。
1、 每分钟执行
Interval => TRUNC(sysdate,’mi’) + 1 /
(24*60)
2、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
3、 每周定时执行
例如:每周一凌晨2点执行
Interval =>
TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天
4、 每月定时执行
例如:每月1日凌晨2点执行
Interval
=>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval =>
TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
6、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval =>
ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval
=>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
分享到:
相关推荐
Oracle PL/SQL存储过程是Oracle数据库中的一种重要编程机制,用于封装复杂的数据库操作逻辑,提高数据库性能,并且便于代码管理和重用。以下是对Oracle存储过程的详细解释。 **Oracle存储过程基础知识** Oracle存储...
Oracle PL/SQL 存储过程是Oracle数据库中一种强大的编程工具,它允许开发人员将一组相关的SQL和控制结构组合在一起,形成可重复使用的代码单元。这些过程可以提高应用程序的性能,减少网络流量,并且便于管理和维护...
- **PL/SQL**:Oracle扩展的编程语言,用于编写存储过程、函数、触发器等。 3. **性能优化** - **索引(Indexes)**:加快查询速度的数据结构,有B树、 bitmap、R树等多种类型。 - **分区(Partitioning)**:将...
Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL和PL/SQL语句,形成一个可重用的程序单元。这样的程序单元可以在需要的时候被调用执行,提高了代码的复用性和数据库的性能。...
Oracle 存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一组SQL语句和PL/SQL代码,形成一个可重复使用的程序单元。存储过程可以提高数据库应用的性能,减少网络流量,并且提供更好的安全性。以下...
在Oracle数据库管理中,创建用户是一...在日常工作中,可以借助工具如SQL*Plus、PL/SQL Developer或Toad等来简化这一过程,提高效率。同时,文档如《Oracle Database Administrator’s Guide》是学习和参考的重要资源。
Oracle存储过程是SQL与PL/SQL结合的强大功能,用于封装复杂的数据操作逻辑于数据库内部,从而实现高效的事务处理和数据管理。以下是对Oracle存储过程的一些关键知识点的深入解析: #### Oracle存储过程基本语法 ...
这篇“常用Oracle语句备忘”将带你深入理解Oracle SQL的基本概念和常见操作,以提升你在数据库管理中的技能。 1. **Oracle SQL基础** Oracle SQL是用于与Oracle数据库交互的语言,它包括了DML(Data Manipulation ...
Oracle存储过程是Oracle数据库中一种用于封装SQL语句、PL/SQL语句或Java语句的程序单元,它可以包含一系列操作,使得商业规则和业务逻辑可以从应用程序中独立出来,集中存储在数据库中。存储过程的好处包括代码的...
3. **关于 Oracle 存储过程的若干问题备忘** - 数据表别名不能使用`as`,应直接使用别名,如 `table t`。 - 在存储过程中,`SELECT` 后的字段必须跟 `INTO` 关键字,将结果保存到变量中,除非使用游标处理多行记录...
并可以修改,有中文说明,oracle数据字典说明,函数说明,并且可以录入自己总结的备忘<br/><br/>资料,以备查看,还有帮助就是一本学习oracle的书,一步一步怎么操作,对各种对象的说明,链接其他参考资料,sql语<br/><br/>句,...
3. **Oracle 存储过程的若干问题备忘** - 数据表别名不能使用`AS`关键字,应该直接写为`table_name alias_name`。 - 在存储过程中,`SELECT`后的字段必须跟`INTO`指定变量,除非使用游标处理整行记录。 - `SELECT...
### Oracle PL/SQL 存储过程详解 #### Oracle存储过程基础知识 存储过程是数据库中预编译好的一段SQL或PL/SQL代码,它可以接受输入参数并返回结果,从而实现复杂的功能逻辑。存储过程的主要优势包括提高性能(因为...
3.2.4 复查PL/SQL和T-SQL代码 3.3 自动复查源代码第1章 什么是SQL注入 3.3.1 YASCA 3.3.2 Pixy 3.3.3 AppCodeScan 3.3.4 LAPSE 3.3.5 SWAAT 3.3.6 Microsoft SQL注入源代码分析器 3.3.7 ...
3. **关于Oracle存储过程的若干问题备忘**: - 数据表别名不加`AS`是Oracle的一个特性,可以直接使用`alias column_name`。 - `SELECT`语句在存储过程中,如果只选择单个字段,必须使用`INTO`将结果存入变量,如`...
3.2.4 复查PL/SQL和T-SQL代码 88 3.3 自动复查源代码第1章 什么是SQL注入 94 3.3.1 YASCA 96 3.3.2 Pixy 96 3.3.3 AppCodeScan 97 3.3.4 LAPSE 97 3.3.5 SWAAT 97 3.3.6 Microsoft SQL注入源代码分析器 98 3.3.7 CAT...
Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL语句和PL/SQL块,以完成特定的任务。这些预编译的代码集合可以提高数据库操作的效率,减少网络流量,并提供更好的安全性和模块...
#### 三、Oracle存储过程的若干问题备忘 **1. 数据表别名的使用** - **注意**: 在Oracle中,数据表别名不能使用关键字`AS`来指定。 **2. SELECT INTO语句的使用** - **要求**: 使用`SELECT INTO`时,必须确保...