数据库实验6 存储过程实验

这篇具有很好参考价值的文章主要介绍了数据库实验6 存储过程实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:游标的mysql代码不懂写,所以没有运行结果

实验6 存储过程实验

实验6.1 存储过程实验

1.实验目的

掌握数据库 PL/SQL 编程语言,以及数据库存储过程的设计和使用方法。

2.实验内容和要求

存储过程定义,存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握PL/SQL编程语言和编程规范,规范设计存储过程。

3.实验过程

(1)无参数的存储过程

定义一个存储过程,更新所有订单的(含税折扣价)总价。

CREATE PROCEDURE Proc_CalTotalPrice ()
BEGIN
	UPDATE orders
	SET totalprice = (
		SELECT SUM(extendedprice * (1 - discount) * (1 + tax))
		FROM lineitem1
		WHERE orders.orderkey = lineitem1.orderkey AND lineitem1.orderkey=1
	);
END;

执行存储过程Proc_CalTotalPrice

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders.totalprice
FROM lineitem1, orders
WHERE orders.orderkey = 1 AND orders.orderkey = lineitem1.orderkey;

CALL Proc_CalTotalPrice();

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders.totalprice
FROM lineitem1, orders
WHERE orders.orderkey = 1 AND orders.orderkey = lineitem1.orderkey;

数据库实验六存储过程,数据库,数据库,mysql,java

可以看到,执行存储过程Proc_CalTotalPrice后,经过计算: totalprice=extendedprice*(tax+1)* (1 - discount)=20000*(1+0.18)*(1-0.09)=21476

可以看到,Proc_CalTotalPrice执行成功

(2)有参数的存储过程

定义一个存储过程,更新给定订单的(含税折扣价)总价。

CREATE PROCEDURE Proc_CalTotalPrice4Order (
	okey integer
)
BEGIN
	UPDATE Orders
	SET totalprice = (
		SELECT sum(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem1
         WHERE orders.orderkey = lineitem1.orderkey
		AND Lineitem1.orderkey=okey
	);
END;

执行存储过程Proc_CalTotalPrice4Order

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders.totalprice
FROM lineitem1, orders
WHERE orders.orderkey = 1 AND orders.orderkey = lineitem1.orderkey;

CALL Proc_CalTotalPrice4Order(1);

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders.totalprice
FROM lineitem1, orders
WHERE orders.orderkey = 1 AND orders.orderkey = lineitem1.orderkey;

数据库实验六存储过程,数据库,数据库,mysql,java

可以看到,传入参数1,代表orderkey=1,经过计算: totalprice=extendedprice*(tax+1)* (1 - discount)=30000*(1+0.18)*(1-0.09)=32214

可以看到,Proc_CalTotalPrice4Order执行成功

(3)有局部变量的存储过程

定义一个存储过程,更新某个顾客的所有订单的(含税折扣价)总价。

CREATE PROCEDURE Proc_CalTotalPrice4Customer (
	p_name char(25)
)
BEGIN
	DECLARE L_custkey integer;
	SELECT custkey
	INTO L_custkey
	FROM Customer1
	WHERE name = TRIM(p_name);
	UPDATE Orders1
	SET totalprice = (
		SELECT sum(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem1
		WHERE Orders1.orderkey = Lineitem1.orderkey
		AND Orders1.custkey = L_custkey
	);
END;

执行存储过程Proc_CalTotalPrice4Customer

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders1.totalprice,Customer1.name
FROM lineitem1, orders1,Customer1
WHERE orders1.orderkey = 1 AND orders1.orderkey = lineitem1.orderkey;

CALL Proc_CalTotalPrice4Customer('张三');

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders1.totalprice,Customer1.name
FROM lineitem1, orders1,Customer1
WHERE orders1.orderkey = 1 AND orders1.orderkey = lineitem1.orderkey;

数据库实验六存储过程,数据库,数据库,mysql,java

可以看到,传入参数’张三’,其在Customer1表中的编号为custkey为1,custkey为1对应orders1表中的orderkey为1的元组,经过计算结果正确,即过程Proc_CalTotalPrice4Customer执行成功

(4)有输出参数的存储过程

定义一个存储过程,更新某个顾客的所有订单的(含税折扣价)总价。

CREATE PROCEDURE Proc_CalTotalPrice4Customer1 (
	IN p_custname char(25), 
	OUT p_totalprice real
)
BEGIN
	DECLARE L_custkey integer;
	SELECT custkey
	INTO L_custkey
	FROM Customer1
	WHERE name = TRIM(p_custname);
	UPDATE Orders1
	SET totalprice = (
		SELECT sum(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem1
         WHERE Orders1.orderkey = Lineitem1.orderkey
		AND Orders1.custkey = L_custkey
	);
	SELECT sum(totalprice)
	INTO p_totalprice
	FROM Orders1
	WHERE custkey = L_custkey;
END;

执行存储过程Proc_CalTotalPrice4Customer1

SELECT lineitem1.extendedprice, lineitem1.orderkey, lineitem1.tax, lineitem1.discount, orders1.totalprice,Customer1.name
FROM lineitem1, orders1,Customer1
WHERE orders1.orderkey = 1 AND orders1.orderkey = lineitem1.orderkey;

CALL Proc_CalTotalPrice4Customer1('张三',@p_totalprice);

SELECT @p_totalprice;

数据库实验六存储过程,数据库,数据库,mysql,java

经计算,结果正确,说明过程Proc_CalTotalPrice4Customer1执行成功

(5)修改存储过程

1)修改存储过程名Proc_CalTotalPrice4Order为CalTotalPrice40rder。

ALTER PROCEDURE Proc_CalTotalPrice4Order RENAME TO CalTotalPrice4Order;

2)编译存储过程

alter procedure CalTotalPrice4Orde(okey integer) compile;

(6)删除存储过程

drop procedure Proc_CalTotalPrice;
4.思考题

(1)试总结几种调试存储过程的方法。

答:

数据库实验六存储过程,数据库,数据库,mysql,java

(2)存储过程中的SELECT语句与普通的SELECT语句格式有何不同?执行方法有何不同?

答:存储过程中的SELECT语句可以将查询的结果赋给存储过程中的变量。普通的SELECT 语句的作用是从数据库中返回信息。

实验6.2 自定义函数实验

1.实验目的

掌握数据库PL/SQL编程语言以及数据库自定义函数的设计和使用方法。

2.实验内容和要求

自定义函数定义,自定义函数运行,自定义函数更名,自定义函数删除,自定义函数的参数传递。掌握PL/SQL和编程规范,规范设计自定义函数。

3.实验过程

自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。
自定义函数的两个必要条件:

  • 参数

  • 返回值(必须有)。函数可以返回任意类型的值。

语法如下:

CREATE FUNCTION function_name(parameter_nametype,[parameter_name type,...])
RETURNS {
STRING|INTEGER|REAL}
runtime_body

注意是returns啊,当初找错找了很久都没发现

(1) 自定义显示时间函数

设计一个可以返回当前时间的函数

DELIMITER $$
CREATE FUNCTION formatDate(fdate datetime) RETURNS VARCHAR(255)BEGIN
	RETURN date_format(fdate,'%Y年%m月%d日%h时%i分%s秒');

END $$
DELIMITER;

运行结果如下:

SELECT formatDate (now( ));

数据库实验六存储过程,数据库,数据库,mysql,java

(2) 无参数的自定义函数

定义一个自定义函数,更新所有订单的(含税折扣价)总价,并返回所有订单的总价之和。

DROP FUNCTION FUN_CalTotalPrice;
CREATE FUNCTION FUN_CalTotalPrice()
RETURNS REAL
BEGIN
	DECLARE res REAL;
	UPDATE Orders1
	SET totalprice = (
		SELECT SUM(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem1
		WHERE Orders1.orderkey = Lineitem1.orderkey
	);
	SELECT SUM(totalprice)
	INTO res
	FROM Orders1;
	RETURN res;
END;

执行自定义函数FUN_CalTotalPrice( )

SELECT FUN_CalTotalPrice();

数据库实验六存储过程,数据库,数据库,mysql,java

通过查看Lineitem1表

数据库实验六存储过程,数据库,数据库,mysql,java

通过计算,最后的结果为

5000*(1-0.09)*(1+0.18)+2000*(1-0.27)*(1+0.67)=5369+2438.2=7807.2,和函数返回结果相同,说明函数运行成功

(3)有参数的自定义函数

定义一个自定义函数,更新并返回给定订单的总价

CREATE FUNCTION FUN_CalTotalPrice4Order (
	p_okey INTEGER
)
RETURNS REAL
BEGIN
	DECLARE res REAL;
	UPDATE Orders
	SET totalprice = (
		SELECT SUM(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem
		WHERE Orders.orderkey = Lineitem.orderkey
			AND Lineitem.orderkey = p_okey
	);
	SELECT SUM(toyalprice)
	INTO res
	FROM Orders;
	RETURN res;
END;

执行自定义函数FUN_CalTotalPrice4Order()

CALL Fun_CalTotalPrice4Order(5365);

(4)有局部变量的自定义函数

定义一个自定义函数,计算并返回某个顾客的所有订单的总价

CREATE FUNCTION FUN_CalTotalPrice4Customer (
	p_custname CHAR(25)
)
RETURNS REAL
BEGIN
	DECLARE L_custkey INTEGER;
	DECLARE res REAL;
	SELECT cuskey
	INTO L_custkey
	FROM Customer
	WHERE NAME = trim(p_custname);
	UPDATE Orders
	SET totalprice = (
		SELECT SUM(extendedprice * (1 - discount) * (1 + tax))
		FROM Lineitem
		WHERE Orders.orderkey = Lineitem.orderkey
			AND Orders.custkey = L_custkey
	);
	SELECT SUM(toyalprice)
	INTO res
	FROM Orders
	WHERE custkey = L_custkey;
	RETURN res;
END;

执行自定义函数FUN_CalTotalPrice4Customer()

SELECT FUN_CalTotalPrice4Customer('张三');

(5)有输出参数的自定义函数

定义一个自定义函数,计算并返回某个顾客的所有订单的总价

CREATE FUNCTION FUN_CalTotalPrice4Customer2 (IN p_custname CHAR ( 25 ), OUT p_totalprice REAL ) RETURNS REAL BEGIN
	DECLARE
		L_custkey INTEGER;
	DECLARE
		res REAL;
	SELECT
		cuskey INTO L_custkey 
	FROM
		Customer 
	WHERE
		NAME = trim( p_custname );
	UPDATE Orders 
	SET totalprice = (
		SELECT
			SUM( extendedprice * ( 1-discount ) * ( 1+tax ) ) 
		FROM
			Lineitem 
		WHERE
			Orders.orderkey = Lineitem.orderkey 
			AND Orders.custkey = L_custkey 
		);
	SELECT
		SUM( toyalprice ) INTO p_totalprice 
	FROM
		Orders 
	WHERE
		custkey = L_custkey;
	res:= p_totalprice;
RETURN res;
END;

mysql运行不了,不知道怎么改

执行自定义函数FUN_CalTotalPrice4Customer2()

SELECT FUN_CalTotalPrice4Customer2('张三'null)

(6)修改自定义函数

修改自定义函数名FUN_CalTotalPrice4Order 为CalTotalPrice4Order

ALTER FUNCTIONFUN_CalTotalPrice4Order RENAME TO CalTotalPrice4Order ;

编译自定义函数CalTotalPrice4Order

ALTER FUNCTIONFUN_CalTotalPrice4Order(okey INTEGER) COMPILE;

(7)删除自定义函数

删除自定义函数CalTotalPrice4Order。

DROP FUNCTION CalTotalPrice4Order ; 
4.思考题

(1)试分析自定义函数与存储过程的区别与联系。

自定义函数与存储过程相似,都是持久性存储模块。
区别:

  1. 存储过程实现的功能相对复杂,函数针对性较强。
  2. 存储过程可以返回多个值,函数只能有一个返回值。
  3. 存储过程一般独立执行,函数可以作为 sql 语句的组成部分来出现。

(2)如何使得自定义函数可以返回多个值?

在函数的内部先定义一个数组,然后把多个要作为返回值的内容,先存入到数组中,然后让函数名字=数组名,这样返回值就是数组了。注意写这一步的时候不要有括号。这么写的话,调用函数的返回值不需要分割那一步,只需要用一般数组变量存储返回值,然后调用数组内容即可。

实验6.3 游标实验

参考 游标

1.实验目的

掌握PL/SQL游标的设计、定义和使用方法,理解 PL/SQL游标按行操作和SQL按结果集操作的区别和联系。

2.实验内容和要求

游标定义,游标使用。掌握各种类型游标的特点、区别与联系。

3.实验过程

游标

游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
尽管游标能遍历结果中的所有行,但一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。

特性

游标具有三个属性:
A、不敏感(Asensitive):数据库可以选择不复制结果集
B、只读(Read only)
C、不滚动(Nonscrollable):游标只能向一个方向前进,并且不可以跳过任何一行数据。

游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。

游标的主要缺点是性能不高。
游标的开销与游标中进行的操作相关,如果在游标中进行复杂的操作,开销会非常高。如果采用面向集合的SQL语句,扫描成本为O(N);但如果采用面向集合的SQL语句的扫描成本为O(N*N),则使用游标有可能会带来性能上的提升。
游标的缺点是只能一行一行操作。在数据量大的情况下,速度过慢。数据库大部分是面对集合的,业务会比较复杂,而游标使用会有死锁,影响其他的业务操作,不可取。 当数据量大时,使用游标会造成内存不足现象。

游标的处理过程

  1. 声明游标 declare:没有检索数据,只是定义要使用的 select 语句
  2. 打开游标 open:打开游标以供使用,用上一步定义的 select 语句把数据实际检索出来
  3. 检索游标 fetch:对于填有数据的游标,根据需要取出(检索)各行
  4. 关闭游标 close:在结束游标使用时,必须关闭游标。

一些游标操作

游标的定义

DECLARE cursor_name CURSOR FOR select_statement  

打开游标

OPEN cursor_name;

取游标中的数据

FETCH cursor_name INTO var_name [, var_name]...

关闭游标

CLOSE cursor_name;

释放游标

DEALLOCATE cursor_name;

(1)普通游标

① 定义一个存储过程,用游标实现计算所有订单的总价。

CREATE 
	OR REPLACE PROCEDURE ProcCursor_CalTotalPrice ( ) AS L_orderkey INTEGER;
L_totalprice REAL;
CURSOR mycursor FOR SELECT
orderkey,
totalprice 
FROM
	Orders;
BEGIN
		OPEN mycursor;
	LOOP
			FETCH mycursor INTO L_orderkey,
			L_totalprice;
		IF
			mycursor % NOTFOUND THEN
				EXIT;
			
		END IF;
		SELECT
			SUM( extendedprice * ( 1-discount ) * ( 1+tax ) ) INTO L_totalprice 
		FROM
			Lineitem 
		WHERE
			orderkey = L_orderkey;
		UPDATE Orders 
		SET totalprice = L_totalprice 
		WHERE
			orderkey = L_orderkey;
		
	END LOOP;
CLOSE mycuesor;
END;

② 执行存储过程ProcCursor_CalTotalPrice()

CALL ProcCursor_CalTotalPrice()

(2)REFCURSOR类型游标

① 定义一个存储过程,用游标实验计算所有订单的总价。

CREATE 
	OR REPLACE PROCEDURE ProcRefCursor_CalTotalPrice ( ) AS DECLARE
	L_orderkey INTEGER;
L_totalprice REAL;
mycuesor REFCURSOR;
BEGIN
		OPEN mycursor FOR SELECT
		orderkey,
		totalprice 
	FROM
		ORDER;
	LOOP
			FETCH mycursor INTO L_orderkey,
			L_totalprice;
		IF
			mycursor % NOTFOUND THEN
				EXIT;
			
		END IF;
		SELECT
			SUM( extendedprice * ( 1-discount ) * ( 1+tax ) ) INTO L_totalprice 
		FROM
			Lineitem 
		WHERE
			orderkey = L_orderkey;
		UPDATE Orders 
		SET totalprice = L_totalprice 
		WHERE
			orderkey = L_orderkey;
		
	END LOOP;
CLOSE mycursor;
END;

② 执行存储过程ProcRefCursor_CalTotalPrice()

 CALL ProcRefCursor_CalTotalPrice(); 

(3)记录变量与游标

① 定义一个存储过程,用游标实现计算所有订单的总价。

CREATE 
	OR REPLACE PROCEDURE ProcRefCursor_CalTotalPrice ( ) AS DECLARE
	L_totalprice REAL;
res RECORD;
CURSOR mycuesor FOR SELECT
orderkey,
totalprice 
FROM
	Orders;
BEGIN
		OPEN mycursor
	LOOP
			FETCH mycursor INTO res;
		IF
			mycursor % NOTFOUND THEN
				EXIT;
			
		END IF;
		SELECT
			SUM( extendedprice * ( 1-discount ) * ( 1+tax ) ) INTO L_totalprice 
		FROM
			Lineitem 
		WHERE
			orderkey = res.orderkey;
		UPDATE Orders 
		SET totalprice = L_totalprice 
		WHERE
			orderkey = res.orderkey;
		
	END LOOP;
CLOSE mycursor;
END;

② 执行存储过程ProcRefCursor_CalTotalPrice()

CALL ProcRefCursor_CalTotalPrice()

(4)带参数的游标

① 定义一个存储过程,用游标实现计算指定国家的用户订单的总价。

CREATE 
	OR REPLACE PROCEDURE ProcRefCursor_CalTotalPrice ( p_nationname CHAR ( 20 ) ) AS DECLARE
	L_totalprice REAL;
res RECORD;
CURSOR mycuesor ( c_nationname CHAR ( 20 ) ) FOR SELECT
O.orderkey,
O.totalprice 
FROM
	Orders O,
	Customer O,
	Nation N 
WHERE
	O.custkey = C.custkey 
	AND c.nationkey = N.nationkey 
	AND TRIM( N.NAME ) = TRIM( c_nationname );
BEGIN
		OPEN mycursor ( p_nationname );
	LOOP
			FETCH mycursor INTO res;
		IF
			mycursor % NOTFOUND THEN
				EXIT;
			
		END IF;
		SELECT
			SUM( extendedprice * ( 1-discount ) * ( 1+tax ) ) INTO L_totalprice 
		FROM
			Lineitem 
		WHERE
			orderkey = res.orderkey;
		UPDATE Orders 
		SET totalprice = L_totalprice 
		WHERE
			orderkey = res.orderkey;
		
	END LOOP;
	CLOSE mycursor;

END;

② 执行存储过程ProcParaCursor_CalTotalPrice()

CALL ProcParaCursor_CalTotalPrice('中国');
4.思考题

试分析说明REFCURSOR类型游标的优点。

答:

  1. REFCURSOR类型的游标定义一个游标应用变量,只是再打开该类型游标时才指定具体的SELECT语句以便产生游标的结果集。因此,REFCURSOR实质上是定义了一个动态游标,可以灵活方便地根据程序运行时情况的变动设置游标的SELECT查询结果集。

  2. 游标可以实现对数据库记录逐条处理,而不是整个结果集一起处理,因此,游标是在PL/SQL语言中实现过程化处理的核心功能。

  3. 记录对于游标结果记录的处理很方便,通过记录变量可以直接访问记录的每个属性,而无需为记录的每个属性定义相应的变量。

5.实验总结

学习了存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握 PL/SQL 编程语言和编程规范,规范设计存储过程。
学习了自定义函数定义、自定义函数运行,自定义函数更名,自定义函数删除,自定义函数的参数传递。掌握 PL/SQL 和编程规范,规范设计自定义函数。
ROM
Lineitem
WHERE
orderkey = res.orderkey;
UPDATE Orders
SET totalprice = L_totalprice
WHERE
orderkey = res.orderkey;

END LOOP;
CLOSE mycursor;

END;


② 执行存储过程ProcParaCursor_CalTotalPrice()

```sql
CALL ProcParaCursor_CalTotalPrice('中国');
4.思考题

试分析说明REFCURSOR类型游标的优点。

答:

  1. REFCURSOR类型的游标定义一个游标应用变量,只是再打开该类型游标时才指定具体的SELECT语句以便产生游标的结果集。因此,REFCURSOR实质上是定义了一个动态游标,可以灵活方便地根据程序运行时情况的变动设置游标的SELECT查询结果集。

  2. 游标可以实现对数据库记录逐条处理,而不是整个结果集一起处理,因此,游标是在PL/SQL语言中实现过程化处理的核心功能。

  3. 记录对于游标结果记录的处理很方便,通过记录变量可以直接访问记录的每个属性,而无需为记录的每个属性定义相应的变量。

5.实验总结

学习了存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握 PL/SQL 编程语言和编程规范,规范设计存储过程。
学习了自定义函数定义、自定义函数运行,自定义函数更名,自定义函数删除,自定义函数的参数传递。掌握 PL/SQL 和编程规范,规范设计自定义函数。
学习了游标定义、游标使用。掌握各种类型游标的特点、区别与联系。文章来源地址https://www.toymoban.com/news/detail-763349.html

到了这里,关于数据库实验6 存储过程实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库(MySQL)的存储过程

    存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。 特点

    2024年02月10日
    浏览(43)
  • MySQL数据库中的存储过程以及存储函数练习

     字段名       数据类型       主键    外键    非空   唯一    自增       id             INT               是      否       是       是           否    name    VARCHAR(50)   否      否       是       否           否    glass   VARCHAR(50)     否   

    2024年02月15日
    浏览(43)
  • MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

    在实际开发过程中,业务需求修改的情况时有发生,所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE 存储过程名 [ 特征 ... ] 特征 指定了存储

    2024年02月04日
    浏览(44)
  • 使用MySQL存储过程提高数据库效率和可维护性

    MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库

    2024年02月08日
    浏览(47)
  • MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)

    目录 系统变量  1.查看系统变量  2.设置系统变量 演示示例 用户定义变量 1.赋值  2.使用 演示示例 局部变量 声明  赋值 演示示例 变量 在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。 系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全

    2024年02月05日
    浏览(52)
  • MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)

    目录 介绍 特点 基本语法 创建 调用 查看 删除  示例  存储过程是 事先经过编译 并 存储在数据库 中的一段 SQL 语句的 集合 ,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想

    2024年02月06日
    浏览(67)
  • 【Mysql】X-DOC:Mysql数据库大量数据查询加速(定时JOB和存储过程应用案例)

    在某中台系统中,设计了大量的基础数据(维度数据、维度映射关系等)来支撑业务功能,业务表中存在大量的维度外键关联字段,其优点是可以实现前端的选择录入,数据校验,确保录入数据的准确性;缺点是在做业务报表时,需要做大量的维度关联(join)操作。 受限于

    2024年02月12日
    浏览(40)
  • 【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL MySQL存储过程作为一种服务器端的 数据库编程方式 ,提供了高效、可重用的方法来执行相对复杂的数据库操

    2024年02月15日
    浏览(68)
  • 数据库: 存储过程

    sql server begin end用法: SQL Server中的BEGIN END用法是用于定义一个代码块,这个代码块可以包含多个SQL语句,BEGIN END通常用于控制流程语句,例如IF语句、WHILE语句、TRY CATCH语句等。在BEGIN END代码块中,可以使用变量、函数、存储过程等SQL Server的元素。BEGINEND的语法如下: BEGIN SQL语

    2024年02月09日
    浏览(41)
  • Oracle数据库创建存储过程

    下面是一个迁移数据库数据的存储过程: 存储过程中用到的 while 循环逻辑:  

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包