【SQL】持久性存储模块PSM

1. 创建PSM函数和过程

创建过程:

CREATE PROCEDURE 名字 (参数)

  局部声明;

  过程体;

创建函数:

CREATE FUNCTION 名字 (参数) RETURNS 类型

  局部声明;

  过程体;

过程的参数:模式-名字-类型的三元组。模式有 IN, OUT, INOUT,默认为IN

函数的参数:只能是IN

CREATE PROCEDURE Move(
    IN oldAddr VARCHAR(255),
    IN newAddr VARCHAR(255)
)
UPDATE MovieStar
SET address = newAddress
WHERE address = oldAddress;

2. PSM中的简单语句

2.1 调用语句:

CALL 过程名 (参数)

在宿主语言中调用形式:EXEC SQL CALL Foo(:x, 3);

作为另一个PSM中的语句

作为发送给基本SQL界面的SQL命令(不许调用函数):CALL Foo(1, 3);

2.2 返回语句:

RETURN 表达式;

只能出现在函数中,PSM的返回语句不会结束这个函数,在函数完成之前返回值都可能会改变。

2.3 局部变量声明

DECLARE 名字 类型;

2.4 赋值语句

SET 变量 = 表达式;

2.5 语句组

以分号结束,置于BEGIN和END之间

2.6 语句标号

用名字和冒号作为前缀来标识语句。

3.分支语句

IF 条件 THEN

时间: 2024-10-09 23:53:00

【SQL】持久性存储模块PSM的相关文章

sql 存储过程和函数

最近在学习数据库,上课过程中总是在许多知识点有或多或少的问题,对于这些问题的产生,大概是由于我听课习惯所造成的吧,好啦,废话不多说,开始今天到主题吧. 首先介绍SQL的存储过程,先来给它定义,存储过程是由过程化SQL语句书写的过程,这个过程经过编译和优化后存储在数据库服务器中,因此称它为存储过程,使用是只需要调用即可 优点: 1.运行效率高,因为它不像解释执行的SQL语句那样在提出操作请求的时候,才开始进行语法分析和优化工作.它提供了在服务器端快速执行SQL语句的有效途径. 2.存储过程降低了客

Java程序连接MySQL数据库

(1)调用Class.forName()方法加载相应的数据库驱动程序 Class.forName(“com.mysql.jdbc.Driver”); (2)调用DriverManager.getConnection()方法,获得一个Connection对象,它表示一个打开的连接 Connection conn = DriverManager.getConnection(URL, username, password); (3)使用Connection.createStatement()方法创建一

[SQLServer]学习总结笔记(基本涵盖Sql的所有操作)

--################################################################################### /* 缩写: DDL(Database Definition Language): 数据库定义语言 DML(Database Manipulation Language): 数据库操作语言 DCL(Database Control Language): 数据库控制语言 DTM(Database Trasaction Manag

数据库与SQL语言<4>

s数据库面试主要包含范式.事务.存储过程.SQL语言,以及索引等诸多方面. 1.数据库理论 第一范式:关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R属于第一范式. 第二范式:如果关系型数据库属于第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称第二范式. 第三范式:如果关系型数据库是第二范式,且每个非主属性每个非主属性都不传递依赖于R的候选键,则称R的第三范式. BC范式:关系模式属于第一范式,且每个属性都不传递依赖于R的候选键. 第四范式:R是一个关系模式,D是

SQL SERVER大话存储结构(3)

阅读目录(Content) 1 引入 2 数据行 2.1 数据行结构 2.2 特殊情况(大对象.行溢出及forword) 2.2.1 大对象 2.2.2 行溢出 2.2.3 forword 3 测试存储情况 3.1 堆表分析 3.2 添加主键 3.3 增加一列:可空变长列 3.4 增加一列:非空变长列+默认值 3.4.1 非大对象列 3.5 删除无数据的列 3.6 删除有数据的列 3.7 行溢出 3.8 Forword 4 行结构与DDL 一行数据是如何来存储的呢? 变长列与定长列,NULL与N

SQl语句收藏

/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES --

SQL VS NoSQL

(关系型与非关系型)数据库的区别: 关系型和非关系型数据库的主要差异是数据存储的方式 1.1 数据表 VS 数据集 关系型数据天然就是表格式的,因此存储在数据表的行和列中.数据表可以彼此关联协作存储,也很容易提取数据.与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起.非关系型数据通常存储在数据集中,就像文档.键值对或者图结构 1.2 预定义结构 VS 动态结构 关系型数据通常对应于结构化数据,因为数据表都有预定义好的结构(列的定义),结构描述了数据的形式和内容.这一点对数据

SQL 注入、XSS 攻击、CSRF 攻击

SQL 注入.XSS 攻击.CSRF 攻击 SQL 注入 什么是 SQL 注入 SQL 注入,顾名思义就是通过注入 SQL 命令来进行攻击,更确切地说攻击者把 SQL 命令插入到 web 表单或请求参数的查询字符串里面提交给服务器,从而让服务器执行编写的恶意的 SQL 命令. 对于 web 开发者来说,SQL 注入已然是非常熟悉的,而且 SQL 注入已经生存了 10 多年,目前已经有很成熟的防范方法,所以目前的 web 应用都很少会存在漏洞允许进行 SQL 注入攻击. 除非是入门开发人员,在开发

SQL里面的事务

--事务:是一种处理机制,一种处理方式,并不是一个实际的操作.包含在事务内的所有有可能修改表数据的操作,要么都能成功执行,要么都不执行.--转帐:你的帐户余额减少,对方帐户余额增加--begin--update bank set cmoney-=1000 where name='aa'--update bank set cmoney+=1000 where name='bb'--end--print @@error --只是找到最近一语句的错误号--事务的特点:ACID:--A:原子性:事务是一