视图
视图可以修改 但尽量不要修改 因为太麻烦 如果要改 尽量改基表
视图的语句可以修改 但不建议修改
-- 创建表 create table t_testseq ( id number, name varchar2(10) ); -- 创建序列 create sequence seq_value start with 1 increment by 1;
注意 这里不是SQL语句 要从新创建用命令窗口
注意:这里如果不点 是不会执行
-- 正常查询 select * from t_testseq where id=50000 -- 创建索引 在查询 (创建索引后 会提高查询速度 ) create index test_index on t_testseq(id)
plsql的结构
组成
1、定义部分:declare
定义一些常量、变量等;
2、执行部分:(begin 必写)
包含要执行的sql语句;
3、异常处理部分:exception
捕获异常(可能出现的运行错误,并编写出错后的代码)
declare --变量声明部分 begin --执行部分 exception --异常处理部分 End
declare 和 exception 可以不写 根据需求 begin和end 必须写
二、调试:
使用set serveroutput on 命令设置环境变量;
serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果。
在编写存储过程时,有时会用
dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上
三、变量定义:(类似java里面的匿名方法)
1、格式:
变量名 变量类型(oracle里面数据类型) [约束] default 默认值
变量名 变量类型 [约束] [:=初始值]
PLSQL基本sql块
SQL> declare
2 n number default 1;
3 begin
4 n:=n+1;
5 dbms_output.put_line(n);
6 end;
7 /
2
PL/SQL procedure successfully completed
四、PL/sql块中流程控制
IF 循环语句
-- PL/SQL 流程语句 if declare height number:=175; begin if height>180 then dbms_output.put_line('你很高'); elsif height>170 and height<180 then dbms_output.put_line('你有点矮'); else dbms_output.put_line('你很矮'); end if; end; /
运行结果:
你有点矮
PL/SQL procedure successfully completed
--while -- 计算1..100的和 declare i number:=1; summ number:=0; begin while i<=100 loop summ:=summ+i; i:=i+1; end loop; dbms_output.put_line(summ); end;
/
运行结果
5050
PL/SQL procedure successfully completed
-- for 循环 计算1...10的和 declare summ number:=0; begin for i in 1..100 loop summ:=summ+i; end loop; dbms_output.put_line(summ); end; /
5050
PL/SQL procedure successfully completed
for循环 倒序打印
-- 倒序打印 1-10 begin for i in reverse 1..10 loop dbms_output.put_line(i); end loop; end;
reverse 是倒序;注意起始值与终止值中间有两点
--Loop 计算1..100的和 declare i number default 1; summ number :=0; begin loop summ:=summ+i; i:=i+1; exit when i>100; end loop; dbms_output.put_line(summ); end; /
存储过程创建语法:
存储过程:有名字的PLSQL 块!
procedure:存储过程!
create or replace procedure 名称[(参数)]-- 这个名称相当于java里的方法名 authid current_user|definer --以定义者还是调用者的身份运行 is[不要加declare] --变量声明部分 begin --主体部分,封装起来,然后调用的时候才开始执行,类似于调用方法 exception --异常部分 end;
-- 创建存储过程 无参 create procedure hello2 is begin dbms_output.put_line('helloworld'); end;
-- 创建存储过程 有参 create procedure addd(a int,b int) is summ int:=0; begin summ:=a+b; sbd dbms_output.put_line(summ); end;
调用存储过程--有参的 call a2(1,2);