plsql基本语法格式

2024-05-28 14:18
文章标签 语法 基本 格式 plsql

本文主要是介绍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_namev_name
程序常量c_namec_company_name
游标变量name_cursoremp_cursor
异常标识e_namee_too_many
表类型name_table_typeemp_record_type
name_tableemp_table
记录类型name_recordemp_record
SQL*Plus替代变量p_namep_sal
绑定变量g_nameg_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基本语法格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010804

相关文章

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析