pl/sql操作数据库之简介和声明变量

这篇文章介绍的是pl/sql数据库语言,如有错误或者不当之处,希望各位大神批评指正。

什么是pl/sql?

  • PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用
  • PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的,但支持Navicat Premium。
  • 是面向过程的语音

pl/sql可用的sql语句

  • DML
    INSERT,UPDATE,DELETE,SELECT INTO,
  • DDL
    CREATE , DROP ,TRUNCATE ,ALTER
  • DCL
    COMMIT,ROLLBACK,SAVEPOINT。

pl/sql块

pl/sql块由声明部分、执行部分、异常处理部分组成,结构如下:

DECLEAR
/*声明部分:声明pl/sql用到的变量类型及游标,及局部的存储过程及函数*/
BEGIN
/*执行部分:过程及sql语句,是程序的主要部分*/
EXCEPTION
/*异常部分:错误处理*/
END
/*sql块结束*/

注:其中,执行部分是必须的

  • 简单的例子
--启用输出
set serveroutput on
declare
  /*声明变量,类型,游标*/
begin
  /*对程序的执行部分,类似于java中的main方法*/
  dbms.output('hello pl/sql!') ;
--exception
  /*对begin发生的异常进行处理
    when...then...
    when...then...*/
end ;
  /*pl/sql代码块结束*/

声明变量DECLARE

声明变量的规范

标识符 命名规则 例子
程序变量 V_name V_name
程序常量 C_Name C_company_name
游标变量 Name_cursor Emp_cursor
异常标识 E_name E_too_many
表类型 Name_table_type Emp_record_type
Name_table Emp
记录类型 Name_record Emp_record
SQL*Plus 替代变量 P_name
绑定变量 G_name G_year_sal

注:变量的类型同oracle

声明变量

  • 例假设有表student,查询学生的年龄,姓名,性别
declare
  --声明变量
  v_age number(3) ;
  v_name varchar(200) ;
  v_sex char(2);
  --或者
  v_age student.age%type ;
  v_name student.name%type ;
  v_sex student.sex%type ;
begin
  select age,name,sex 
  into v_age,v_name,v_sex
  from student
  where id = 100001 ;  

  dbms_output.put_line(v_name||','||v_age||','||v_sex) ;
end ;

注:数据类型要对应,长度要大于等于查的字段的长度,推荐使用变量名%type取对应字段

声明记录类型

  • 记录类型:记录类型是把逻辑相关的数据作为一个单元存储起来,它必须包括至少一个标量型或RECORD 数据类型的成员,称作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。

-例,定义一个记录类型用于查学生

declare
  /*定义记录类型*/
   type student_recode is record(
    v_age student.age%type ,
    v_name student.name%type ,
    v_sex student.sex%type
    );
  /*声明记录类型*/
    v_student_record student_recode ;

  /*或者使用直接使用rowType*/
    v_student_record student%rowType ;
begin
  select age,name,sex 
  into student_recode
  from student
  where id = 100001 ;  

  dbms_output.put_line(v_student_record.v_name||','||v_student_record.v_age||','||v_student_record.v_sex) ;
end ;
  • table%rowType:返回类型与table中的列类型一致
  • param%Type:返回类型与param字段一致

ql/sql的赋值符为 :=
逻辑运算符、关系运算符、算术运算符同oracle的相关运算符

猜你喜欢

转载自blog.csdn.net/u013634252/article/details/80800794