写点什么

【笔记】面向过程的 SQL 扩展 (一)

作者:w010w
  • 2022-10-30
    北京
  • 本文字数:920 字

    阅读完需:约 3 分钟

1.服务器端程序

存储过程:用户创建的,使用 SQL 和其他语言(如 PL/SQL,Oracle 对 SQL 扩展的过程式语言)编写的过程或函数,存储在数据库内部,用来完成一个特定的任务

存储过程优点:

2.PL/SQL 的基本语法

PL/SQL 的基本规则

每条语句可以写在多行

以;结尾

保留字和变量对大小写不敏感

--单行注释;/**/多行注释

块结构

一个块结构语法地位等同于一条语句

块的整体构成

[<<块名>>]

[DECLARE 声明部分]

BEGIN 执行部分

[EXCEPTION 错误处理部分]

END;

变量的定义与使用

简单示例

定义一个 NUMBER 型变量,初值为 NULL

test_count NUMBER(4);
复制代码

注意:NOT NULL 类型的变量必须赋初值

test_count NUMBER(4) NOT NULL:=0;
复制代码

设置变量的初始值和缺省值

example_char CHAR:='A';example_char DEFAULT 'A';
复制代码

%TYPE

使用其他变量或字段的数据类型,但不继承 NOT NULL 属性

credit NUMBER(7,2) NOT NULL:=0;debit credit%TYPE;
复制代码

经常用于表中字段的数据类型

my_sname salers.sname%TYPE;
复制代码
  • 不需知道精确类型

  • 在表定义发生变化时不用修改程序

%ROWTYPE

使用其他表和游标定义记录变量

salers_rec salers%ROWTYPE;CURSOR c1 IS SELECT sid,sname,lid FROM salers;cur_salers c1%ROWTYPE;
复制代码

赋值计算比较

赋值运算符:=

作用域

外层定义的变量可以在内层块中使用

可在不同块中定义同名变量

内层块可通过外层块的块名引用外层变量

可以直接在 PL/SQL 中使用 DQL 和 DML

在 SQL 语句中使用变量的值

可使用表达式的地方都可以使用变量

直接写变量名,不需要额外的语法要素

将查询结果赋给一个变量

SELECT ···INTO 变量列表 FROM ···[··· 其他子句]
复制代码

要求 SELECT 语句必须返回 1 行结果,运行时返回多行或 0 行(与查询子句不同)会报错

必须在逻辑上保证返回 1 条记录,(使用主键或聚组函数等

3.控制流语句

  • 定义标号

<<标号名>>

  • 跳转语句

GOTO 标号名;

EXIT 标号名 [WHEN 条件];

  • 空语句

NULL;

  • 返回语句

RETURN

条件语句

IF 条件 THEN		语句END IF;
复制代码


IF 条件 THEN	语句1ELSE	语句2END IF;
复制代码


IF 条件1 THEN	语句1ELSE IF 条件2 THEN	语句2  ```ELSE	语句nEND IF;
复制代码

循环语句

<<标号1>>LOOP	  	<<标号2>>    LOOP    	      EXIT 标号1 WHEN 条件;    END LOOP;    END LOOP;
复制代码

while 循环

WHILE 条件 LOOP
END LOOP;
复制代码

for 循环

FOR 变量 IN 值1..值2[REVERSE] LOOP
END LOOP;
复制代码


发布于: 刚刚阅读数: 2
用户头像

w010w

关注

还未添加个人签名 2022-10-17 加入

还未添加个人简介

评论

发布
暂无评论
【笔记】面向过程的SQL扩展(一)_数据库_w010w_InfoQ写作社区