0730 视图、索引、PL/SQL 流程控制、创建存储过程有、无参

视图

视图可以修改 但尽量不要修改 因为太麻烦 如果要改 尽量改基表

视图的语句可以修改    但不建议修改 

-- 创建表
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);
原文地址:https://www.cnblogs.com/zs0322/p/11268884.html