标签:令行 home strong 关闭 end 语句 stat 数据类型 zha
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_output是oracle的程序包,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
标签:令行 home strong 关闭 end 语句 stat 数据类型 zha
原文地址:https://www.cnblogs.com/enjoyjava/p/9130990.html