pl/sql(一)


--pl/sql

--主要是结构  以及基础的定义
--判断 循环  loop 分支
--应用 异常处理   函数  

-- pl/sql 语言的注释
/*

使用/* */

/*

这个就是段落注释 
第二个注释方法就是
-- 前面两个-号

*/

/*
sql  结构化查询语言  cudr  第四代语言

pl/sql  第三代语言  是一种过程化的语言 java c# 都是第三代语言
java能做什么?
C# 
定义变量 char  int
定义结构体 (int ,char)
判断 if else
循环 for  while  do--while
函数 f(x,y){return x}


pl/sql 也可以完成以上所有操作


1 .pl/sql 可以提高程序性能
soft软件    ---->sql  -------> 数据库中
            ---->sql  ------->
            ---->sql  ------->
            ---->sql  ------->
            ---->sql  ------->
特点就是每一次执行操作都需要进行一次操作
打开链接  传入sql  执行 获得结果  关闭链接
打开链接  关闭链接  都是时间开销

1 使用别的框架  学java的同学 mybatis 代理池


pl/sql 语言

soft --------->   pl/sql 代码块   ------->数据库

打开链接  执行预先准备的pl/sql代码  对数据库处理


2使程序模块化

pl/sql是三代语言  java  c#
可以编写函数
f(a,b)
    if a>b
        return a
    else
        return b

3 使用逻辑语句
    if  while for  do-while
4 处理错误信息
sql
select * from studenn     :studenn错误  表不存在 就会中断运行
select * from student
while sid='001';

pl/sql 通过一些设置在中断之后还能够继续运行

5 移植性
oracle server1  -----------
                           | 拷贝 就可移植过来
       server2  <----------

*/

/*
回忆java里面学过什么东西
hello wrod!

输出语句  system.out.print()



*/

DECLARE
-- 最基本的pl/sql 代码块
BEGIN  
--开始
--在一个表里面有一个输出函数
DBMS_OUTPUT.PUT_LINE('这是我的第一个PL/SQL的执行');  --换行打印
-- EXCEPTION  ---跟的是异常处理
END;   
/
--结束




--申明变量
DECLARE
--在此申明变量
--取名 数据类型
stu_no varchar2(10) ;  --这个数据和我们数据库中的sno数据类型一致

BEGIN  
--可以进行赋值
-- 注意 赋值不能使用 = 需要使用 := 进行赋值  
stu_no := 's001';
--开始
--在一个表里面有一个输出函数
DBMS_OUTPUT.PUT_LINE('学生的id是' || stu_no);  --换行打印
END;   
--结束
/

-- 注意  这个开关 默认是关闭的
SET SERVEROUTPUT ON
-- 注意  这个开关 默认是关闭的
SET SERVEROUTPUT ON
-- 注意  这个开关 默认是关闭的
SET SERVEROUTPUT ON

ON  开
OFF 关


--申明变量
DECLARE
--在此申明变量
--取名 数据类型
v_sno varchar2(10);   --能不能直接使用表的数据类型?
v_sname varchar2(20);
v_sage number(2);
v_ssex varchar2(5);

--可以进行赋值
stu_no := 's001' 

-- 注意 赋值不能使用 = 需要使用 := 进行赋值  
BEGIN  
--开始
--在一个表里面有一个输出函数
DBMS_OUTPUT.PUT_LINE('这是我的第一个PL/SQL的执行');  --换行打印
END;   
--结束


-- 查看表结构
desc table_name
/*
SQL> desc  student
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ---------------
 SNO                                       NOT NULL VARCHAR2(10)
 SNAME                                              VARCHAR2(20)
 SAGE                                               NUMBER(2)
 SSEX                                               VARCHAR2(5)
*/



DECLARE
-- 最基本的pl/sql 代码块
v_sno varchar2(10);   --能不能直接使用表的数据类型?
v_sname varchar2(20);
v_sage number(2);
v_ssex varchar2(5);
BEGIN  
select sno,sname,sage,ssex 
into  v_sno,v_sname,v_sage,v_ssex
from student
where sno='s001' ;
--开始
--在一个表里面有一个输出函数
DBMS_OUTPUT.PUT_LINE('学生姓名:'||v_sname);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生性别:'||v_ssex);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生年龄:'||v_sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||v_sage);  --换行打印
END;   
/




DECLARE
-- 最基本的pl/sql 代码块
v_sno student.sno%type;   --能不能直接使用表的数据类型
v_sname student.sname%type;
v_sage student.sage%type;
v_ssex student.ssex%type;
BEGIN  
select sno,sname,sage,ssex 
into  v_sno,v_sname,v_sage,v_ssex
from student
where sno='s001' ;
--开始
--在一个表里面有一个输出函数
DBMS_OUTPUT.PUT_LINE('学生姓名:'||v_sname);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生性别:'||v_ssex);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生年龄:'||v_sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||v_sage);  --换行打印
END;   
/


ps:
v_ssex student.ssex%type;
/*
v_ssex  : 变量名称
student : 表名称
.       : 取表的数据
ssex    : 表的字段
%type   : 获取字段的数据类型
;
*/




DECLARE
-- 最基本的pl/sql 代码块
v_sno student.sno%type;   --能不能直接使用表的数据类型?
v_sname varchar2(20);
v_sage student.sage%type;
v_ssex student.ssex%type;
v_test CONSTANT v_sname%type:='test';
BEGIN  
select sno,sname,sage,ssex 
into  v_sno,v_sname,v_sage,v_ssex
from student
where sno='s001';
--开始
--在一个表里面有一个输出函数v
DBMS_OUTPUT.PUT_LINE('学生姓名:'||v_sname);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生性别:'||v_ssex);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生年龄:'||v_sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||v_sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||v_test);  --换行打印
END;   
/


ps:
v_ssex student.ssex%type;
/*
v_ssex  : 变量名称
student : 表名称
.       : 取表的数据
ssex    : 表的字段
%type   : 获取字段的数据类型
;
*/

v_sname varchar2(20);
v_test CONSTANT v_sname%type:='test';
/*
要使用数据类型继承的时候 首先被继承的申明必须是明确的
v_test :变量名称
CONSTANT :关键字
v_sname  :被继承的变量名称
%type    :获取变量的数据类型和大小
:='test'; : 要给一个初始值
*/



DECLARE
-- 最基本的pl/sql 代码块

TYPE studen IS RECORD(
v_sno student.sno%type, 
v_sname varchar2(20),
v_sage student.sage%type,
v_ssex student.ssex%type
);
s studen ;
BEGIN  
select sno,sname,sage,ssex 
into    s --返回的是一个单独的实例
from student
where sno='s001';
--开始
--在一个表里面有一个输出函数v
DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.v_sname);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生性别:'||s.v_ssex);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.v_sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||s.v_sage);  --换行打印

END;   
/





--PS
TYPE studen IS RECORD(
v_sno student.sno%type,   --能不能直接使用表的数据类型?
v_sname varchar2(20),
v_sage student.sage%type,
v_ssex student.ssex%type
);
/*
TYPE :申明的关键字
 studen  :自己取的结构体名称
 
 IS RECORD : 关键字

(
....      :数据结构
);
*/
s studen ;
-- 注意:使用前要先定义
DBMS_OUTPUT.PUT_LINE('学生学号:'||s.v_sage);  --换行打印
-- 调用的时候使用变量名称.变量的方法


-- 总结:
-- 先申明   (申明的是数据结构)
-- 再定义   (定义数据的类型)
-- 后使用   (再来使用定义过后的变量)
-- int a =10;



DECLARE
-- 最基本的pl/sql 代码块
-- student;
s student%ROWTYPE;
BEGIN  
select *
into    s --返回的是一个单独的实例
from student
where sno='s001';
--开始
--在一个表里面有一个输出函数v
DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sage);  --换行打印

END;   
/


-- 到此结束 end
每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
原文地址:https://www.cnblogs.com/16699qq/p/13153502.html