基于oracle 的PL/SQL编程-1

Posted enjoyjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于oracle 的PL/SQL编程-1相关的知识,希望对你有一定的参考价值。

  1.  本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要打开的服务:

OracleDBConsoleorcl

OracleOraDb10g_home1iSQL*Plus

OracleOraDb10g_home1TNSListener

OracleServiceORCL   这个后面的ORCL就是数据库名字,官方术语叫做数据库sid

 

2.打开PL/SQL软件,用户名scott 登陆数据库 ORCL 密码 tiger

技术分享图片

3.打开一个测试窗口,如下

技术分享图片

 1 -- Created on 2018/6/3 by ADMINISTRATOR 
 2 declare
 3   -- 声明本地变量的地方,包括游标(结果集类型变量),如果没有,declare可以去掉
 4   --相当于java的 public class A{}
 5   i integer;
 6 begin
 7   -- 执行部分
 8   --相当于Java的public static void main(String[] args)
 9   --异常处理
10 end;

4.打印helloworld

技术分享图片

结果如下:

技术分享图片

dbms_outputoracle的程序包,put_line()是调用的方法

在命令行中打印:需要先设置 set serveroutput on ,才会将打印语句打印出来,否则只执行不打印。

技术分享图片 技术分享图片

 

5. PLSQL变量的使用:

PLSQL中的变量分两种:

(1)普通数据类型:char varchar2 date number(整数和小数) boolean long

(2)特殊变量类型(引用变量、记录型变量)

变量的声明方式为:变量名 变量类型(变量长度) ,例如:v_name varchar2(20)

变量赋值:

  (1)声明时使用 := 直接赋值:v_name varchar2(20) := ‘zhangsan’        只写=,则是进行比较

  (2)语句赋值: select  值  into 变量名 

 5.1 普通变量的使用

 1 -- 声明一个人的信息 姓名 薪水 地址  
 2 declare
 3   -- 姓名 不能使用name,这是保留字
 4   v_name varchar2(50) := 张三;
 5   -- 薪水   小数:number(总长度(小数加整数的位数),小数位数) v_sal number(6,2) --1000.00
 6   v_sal number;
 7   --地址
 8   v_addr varchar2(200);
 9 begin
10   --直接赋值
11   v_sal := 15000;
12   --语句赋值
13   select 上海市南京路 into v_addr from dual; --实际工作中应该是from 某个表 
14   -- 打印变量  || 是拼接符,相当于java 的+
15   dbms_output.put_line(姓名: || v_name || ,薪水: || v_sal || ,地址: || v_addr);
16 end;

执行结果:

技术分享图片

5.2 引用变量的使用

引用变量:变量的类型和长度取决于表中字段的类型和长度(变量的类型和长度引用表中字段的类型和长度),通过  表名.列名%TYPE 指定变量的类型和长度,例如 v_name emp.ename%TYPE

引用型变量的好处:使用普通变量定义方式,需要知道表中列的类型,而使用引用类型不需要考虑列的类型,使用%TYPE是非常号的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。

 

 1 -- 查询emp表中7839号员工的个人信息,打印姓名和薪水
 2 declare
 3   -- 姓名 定义的是引用变量
 4   v_ename emp.ename%TYPE;
 5   -- 薪水  
 6   v_sal emp.sal%TYPE;
 7 
 8 begin
 9   --查询姓名和薪水并赋值给变量,。使用select into 语句赋值
10   select ename, sal into v_ename, v_sal from emp where empno = 7839;
11   dbms_output.put_line(姓名: || v_ename || ,薪水: || v_sal);
12 
13 end;

结果:

技术分享图片

5.3 记录型变量

记录型变量 默认接接收 表中的一行数据,不能指定字段,相当于java中的一个对象。

语法: 变量名称 表名%ROWTYPE 例如 v_emp emp%rowtype;   通过 变量名.字段名 的方式获取变量中的值

 

 1 --记录型变量示例:用该变量接收表中一行sql的信息
 2 declare
 3   -- 记录型变量
 4   v_emp emp%ROWTYPE;
 5 
 6 begin
 7   --查询所有字段并赋值给变量,字段名用v_emp.字段名 表示
 8   select * into v_emp from emp where empno = 7839;
 9   dbms_output.put_line(姓名: || v_emp.ename || ,薪水: || v_emp.sal);
10 
11 end;

结果:

技术分享图片

6.流程控制:

条件分支,语法:

BEGIN

   IF 条件1 then  执行1;

     Elsif 条件2 then 执行2 ;   --注意不是 elseif  ,是elsif

     Else  执行3

         End if;

END

 

以上是关于基于oracle 的PL/SQL编程-1的主要内容,如果未能解决你的问题,请参考以下文章

基于oracle 的PL/SQL编程

基于oracle 的PL/SQL编程

oracle PL/SQL高级编程

Oracle | PL/SQL编程

oracle用sql plus登陆不了,但是用pl sql可以登录,是啥原因?

Oracle——PL/SQL