本文主要是介绍plsql基本语法格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1 PL/SQL可用的SQL语句
- 2 PL/SQL块
- 3 建议的命名方法
- 4 复合类型
- 4.1 使用记录类型
- 4.2 使用%ROWTYPE
1 PL/SQL可用的SQL语句
PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成。在PL/SQL中可以使用的SQL语句有:
INSERT, UPDATE, DELETE, SELECT ... INTO, COMMIT, ROLLBACK, SAVEPOINT。
提示:在PL/SQL中只能用SQL语句中的DML部分,不能用DDL部分,如果要在PL/SQL中使用DDL(如CREATE table等)的话,只能以动态的方式来使用。
2 PL/SQL块
PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分
PL/SQL块的结构如下:
DECLARE
/*声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/
BEGIN
/*执行部分:过程及SQL语句,即程序的主要部分*/
EXCEPTION
/*执行异常部分:错误处理*/
END;
其中,执行部分是必须的
例如:(在PL/SQL中执行前需运行set serveroutput on
语句)
--declare--声明的变量、类型、游标
begin--程序的执行部分(类似于java里的main()方法)dbms_output.put_line('helloworld');
--exception--针对begin块中出现的异常,提供处理的机制--when ... then ...--when ... then ...
end;
declare--变量、记录类型等的声明v_sal number(8,2) := 0;
begin--程序的执行部分select salary into v_salfrom employeeswhere employee_id = 123;dbms_output.put_line('salary: '||v_sal);
--exception--异常的处理
end;
在 PL/SQL 编程中,变量赋值是一个值得注意的地方,它的语法如下:
variable := expression;
variable 是一个 PL/SQL 变量,expression 是一个 PL/SQL 表达式
--查询编号为100号员工的工资
declare--声明变量v_sal varchar2(20);
begin--sql语句的操作:select ... into ... from ... where ...select salary into v_sal from employees where employee_id = 100;--打印dbms_output.put_line(v_sal);
end;
--查询编号为100号员工的工资,邮箱,入职时间
declare--声明变量v_sal number(10,2);v_email varchar2(20);v_hire_date date;
begin--sql语句的操作:select ... into ... from ... where ...select salary, email, hire_date into v_sal, v_email, v_hire_date from employees where employee_id = 100;--打印dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);
end;
使用%TYPE
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库的某个列的数据类型相同,这时可以使用%TYPE
使用%TYPE特性的优点在于:
- 所引用的数据库列的数据类型可以不知道
- 所引用的数据库列的数据类型可以实时改变
declare--声明变量v_sal employees.salary%type;v_email employees.email%type;v_hire_date employees.hire_date%type;
begin--sql语句的操作:select ... into ... from ... where ...select salary, email, hire_date into v_sal, v_email, v_hire_date from employees where employee_id = 100;--打印dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);
end;
3 建议的命名方法
标识符 | 命名规则 | 例子 |
---|---|---|
程序变量 | 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_table |
记录类型 | name_record | emp_record |
SQL*Plus替代变量 | p_name | p_sal |
绑定变量 | g_name | g_year_sal |
4 复合类型
4.1 使用记录类型
ORACLE在PL/SQL中除了提供基础的变量类型外,还提供一种称为复合类型的类型——记录
记录类型是把来逻辑相关的数据作为一个单元存储起来,称作PL/SQL RECORD的域(FIELD),其作用是存放互不相同但逻辑相关的信息。
例如:
declare--声明一个记录类型type emp_record is record(v_sal employees.salary%type,v_email employees.email%type,v_hire_date employees.hire_date%type);--定义一个记录类型的成员变量v_emp_record emp_record;
begin--sql语句的操作:select ... into ... from ... where ...select salary, email, hire_date into v_emp_record from employeeswhere employee_id = 100;--打印dbms_output.put_line(v_emp_record.v_sal||','||v_emp_record.v_email||','||v_emp_record.v_hire_date);
end;
declaretype salary_record is record(v_name varchar2(20),v_salary number(10,2));v_salary_record salary_record;
beginv_salary_record.v_name := '刘德华';v_salary_record.v_salary := 100000; dbms_output.put_line('name: '||v_salary_record.v_name||' salary: '||v_salary_record.v_salary);
end;
4.2 使用%ROWTYPE
PL/SQL 提供%ROWTYPE操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致
使用%ROWTYPE特性的优点在于:
- 所引用的数据库中列的个数和数据类型可以不必知道
- 所引用的数据库中列的个数和数据类型可以实时改变
declarev_emp_record employees%rowtype;
beginselect * into v_emp_record from employees where employee_id = 123;dbms_output.put_line('employeeid: '||v_emp_record.employee_id);
end;
这篇关于plsql基本语法格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!