PLSQL基础知识

一、PLSQL块

1. 块的组成

  1. 匿名块
  2. 过程,函数和包
  3. 触发器

2. plsql块的基本组成

  1. declare 定义部分:声明变量,常量,异常,游标
  2. begin 可执行部分:以end结束
  3. exception 异常处理部分

3. plsql语法

	declare
		-变量、常量、游标、异常、用户自定义的特殊类型
	begin -必须
		-SQL语句
		-PL/SQL语句
	exception -可选
		-错误发生时的处理动作
	end; -必须

例子:

	declare
		v_name varchar2(10);--每个变量以分号结束
		v_job varchar2(10);
	begin  --只能返回一条记录
		select ename,job into v_name,v_job   --into是将查询的结果给变量赋值
		from emp
		where empno=7369;
	end;

二、变量的命名规则

  1. 至多有30个字符
  2. 不能是保留字
  3. 必须以字母开头
  4. 包含字母、$、_、#、数字符号

三、变量的惯例命名

标识符惯例例子
Variable(变量)v_namev_sal
Constant(常量)c_namec_company_name
Cursor(游标)name_cursoremp_cursor
Exception(异常)e_namee_too_many
Table(表类型变量)name_tableorder_total_table
Record(记录型变量)name_recordcustomer_record
SQL*Plus substitution parameter(形式参数)p_namep_sal
SQL*Plus global variable(全局变量)g_nameg_year_sal

四、变量的类型

  1. 标量型
    例子:
	declare 
		v_date date;
		v_deptno number(2) not null := 10;   --如果加上not null约束,那么必须要赋初始值
		v_name varchar2(10) not null := 'zs';  --字符类型必须使用单引号
		c_job constant varchar2(10) not null := '研发';  --constant约束的为常量,常量必须要赋初始值,且其值不可变
		v_valid boolean not null := true;  --boolean类型有三个变量:true,false,null
  1. 复合型:记录和数组
  2. 引用型
  3. lob型

五、数据库中的列名与变量名不建议相同

案例:

	declare 
		v_job varchar(10);
		v_empno emp.empno%type := 7369;  --%type:自动与表中字段类型匹配
	begin
		select job into v_job
		from emp
		where empno=v_empno;
	end;

注意:匿名块只能检索一条数据

六、输出查询的数据:dbms_output.put_line()

案例:

	declare
		v_job varchar(10);
		v_empno emp.empno%type := 7369;   --%type:自动与表中字段类型匹配
	begin
		select job into v_job
		from emp
		where empno=v_empno;
		dbms_output.put_line('工作岗位是:'||v_job);   	--通过||拼接
	end;

七、注释

  1. 单行注释:–
  2. 多行注释:/* */

八、数据类型转换

转换函数:to_char to_date to_number

  1. to_char转换
	declare
		v_date varchar2(15);
		v_empno emp.empno%type := 7369;
	begin
		select to_char(hiredate,'yyyy-mm-dd') into v_date
		from emp
		where empno=v_empno;
		dbms_output.put_line('时间是:'||v_date);
	end;
  1. 案例:显示员工号为7369的员工及部门号
	declare
		v_empno emp.empno%type := 7369;
		v_ename emp.ename%type;
		v_deptno emp.deptno%type;
	begin
		select ename,deptno into v_ename,v_deptno
		form emp
		where empno=v_empno;
		dbms_output.put_line('员工名:'||v_ename||'部门号:'||v_deptno);	
	end;
  1. 案例:返回指定部门所有员工的工资总额
	declare
		v_sal_sum emp.sal%type;	--接收sum(sal)的值
		v_deptno emp.deptno%type := 10;
	begin
		select sum(sal) into v_sal_sum
		from emp
		where deptno = v_deptno;
		dbms_output.put_line('部门'||v_deptno||'的工资总额是:'||v_sal_sum);
	end;

九、实现增删改

1. 增

	declare
		v_empno copy_emp.empno%type := 3;
		v_ename copy_emp.ename%type := '张三';
		v_job copy_emp.job%type := '研发';
		v_deptno copy_emp.deptno%type := 10;
	begin
		insert into copy_emp(empno,ename,job,deptno)
		values(v_empno,v_ename,v_job,v_deptno);
	end;

2. 改

	declare
		v_sal emp.sal%type := 800;
		v_job emp.job%type := 'ANALYST';
	begin
		update emp
		set sal=sal+v_sal
		where job=v_job;
	end;

3. 删

	declare
		v_name emp.ename%type := '张三';
	begin
		delete from emp
		where ename=v_name;
	end;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值