mysql】【Python基础】mysql数据库存储过程怎么写

2020-11-23 14:48发布

7条回答
1234
2楼 · 2020-11-23 17:28

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。类比面向对象编程的类。说白了,存储过程就是具有名字的一段代码,用来完成一个特定的功能。


kitidog2016
3楼 · 2020-11-23 18:46

创建存储过程
mysql> delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.
mysql> create procedure sp_test(IN pi_id int, OUT po_name varchar(10))
-> begin
-> select * from test.tb_test;
-> select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id;
-> end
-> $
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ; -- 恢复分号作为分隔终止符号

5.调用存储过程
mysql> set    @po_name='';
Query OK, 0 rows affected (0.00 sec)
mysql> call   sp_test(1,@po_name);

无需指教
4楼 · 2020-11-24 09:05

MySQL的存储过程(call):

一,解释:

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。

不过最主要的还是执行效率和SQL 代码封装

特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。

现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

 

二,使用

第一部分:创建一个简单的无参的存储过程**

1 用mysql客户端登入

2 选择数据库

mysql>use test;

3 查询当前数据库有哪些存储过程

mysql>   show procedure status where Db='数据库表名';# 创建一个简单的存储过程mysql>   create procedure hi() select 'hello';# 存储过程创建完毕,看怎么调用它mysql>   call hi();  # 显示结果  mysql> call hi(); +-------+ | hello | +-------+ | hello | +-------+ 1 row in set (0.00 sec)   Query OK, 0 rows affected (0.01 sec)# 一个简单的储存过程就成功了,这只是一个演示,存储过程可以一次执行多个sql语句


MySQL 创建存储过程函数 ,函数的基本写法

create procedure 存储过程名字()(  [in|out|inout] 参数 datatype)BEGIN//  MySQL 逻辑语句(参数自定义)END
MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”。习惯上,对于是“in” 的参数,我们都不会显式指定。
语法注意事项:1,MySQL 存储过程中的每条语句的末尾,都要加上分号 “;”  ...  declare c int;  if a is null then     set a = 0;  end if;  ...end;2,注释是  --   ;  MySQL 存储过程的参数不能指定默认值3,不能在 MySQL 存储过程中使用 “return” 关键字。  set c = a + b;  select c as sum; end;4. 调用 MySQL 存储过程时候,需要在过程名字后面加“()”,即使没有一个参数,也需要“()”call pr_no_param();5. 因为 MySQL 存储过程参数没有默认值,所以在调用 MySQL 存储过程时候,不能省略参数。可以用 null 来替代。call pr_add(10, null);

参考:https://www.cnblogs.com/you-zi/p/5519006.html

-- --------------------------------------------------------------------------------------------------------------------------------------------------------

补充

MySQL `IFNULL` 函数是MySQL控制流函数之一,它接受两个参数,如果不是`NULL`,则返回第一个参数。 否则,`IFNULL`函数返回第二个参数。两个参数可以是文字值或表达式IFNULL(expression_1,expression_2);    // 如果`expression_1`不为`NULL`,则`IFNULL`函数返回`expression_1`; 否则返回`expression_2`的结果。`IFNULL`函数根据使用的上下文返回字符串或数字


aijingda
5楼 · 2020-11-24 09:24

存储过程的创建和调用


(1)存储过程就是具有名字的一段代码,用来完成一个特定的功能。

(2)创建的存储过程保存在数据库的数据字典中。


创建存储过程↓


CREATE    [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]])    [characteristic ...] routine_body proc_parameter:    [ IN | OUT | INOUT ] param_name type characteristic:    COMMENT 'string'  | LANGUAGE SQL  | [NOT] DETERMINISTIC  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }  | SQL SECURITY { DEFINER | INVOKER } routine_body:   Valid SQL routine statement [begin_label:] BEGIN  [statement_list]     ……END [end_label]


以上就是mysql数据库存储过程的写法。

小猪仔
6楼 · 2020-11-24 09:45

创建存储过程

CREATE    [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]])    [characteristic ...] routine_body proc_parameter:    [ IN | OUT | INOUT ] param_name type characteristic:    COMMENT 'string'  | LANGUAGE SQL  | [NOT] DETERMINISTIC  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }  | SQL SECURITY { DEFINER | INVOKER } routine_body:   Valid SQL routine statement [begin_label:] BEGIN  [statement_list]     ……END [end_label]

MYSQL 存储过程中的关键语法

声明语句结束符,可以自定义:

DELIMITER $$或DELIMITER //

声明存储过程:

CREATE PROCEDURE demo_in_parameter(IN p_in int)

存储过程开始和结束符号:

BEGIN .... END

变量赋值:

SET @p_in=1

变量定义:

DECLARE l_int int unsigned default 4000000;

创建mysql存储过程、存储函数:

create procedure 存储过程名(参数)

存储过程体:

create function 存储函数名(参数)


py大白
7楼 · 2020-11-30 16:57
创建存储过程
mysql> delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.
mysql> create procedure sp_test(IN pi_id int, OUT po_name varchar(10))
-> begin
-> select * from test.tb_test;
-> select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id;
-> end
-> $
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ; -- 恢复分号作为分隔终止符号

5.调用存储过程
mysql> set    @po_name='';
Query OK, 0 rows affected (0.00 sec)
mysql> call   sp_test(1,@po_name);
希希
8楼 · 2020-12-01 13:44

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。类比面向对象编程的类。说白了,存储过程就是具有名字的一段代码,用来完成一个特定的功能。


相关问题推荐

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 5

    在常规里面设置成utf-8

  • 回答 10

    首先是我们将鼠标移动到如下图所示的计算机的图标上,点击右键,选择管理。然后我们点击如下图界面中的服务和应用程序。接下来可以看到它下面有一个我们的目标——服务。服务的话它是按字母排列的,我们往下拉,找到Mysql服务。此时可以看到它是一个手动启动...

  • 回答 7

    有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息可能会对解决问题有所帮助:下列软件包有未满足的依赖关...

  • 回答 20

    1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。3. MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。4. MySQL Cluster CGE 高级集群版,需付费...

  • 回答 8

    mysql创建外键要求比较严格,严格到有时候你找不到到底哪里错了。1.检查你的表是不是都是INNodb类型的,只有这种类型才可以创建外键。2.检查字段名是不是有错误。3.检查字段类型,最好一样。4.比较隐蔽,检查字符集,为了迁移和使用的方便,尽量使用UTF85.上...

  • 回答 2

    1、请查看数据库的存储引擎,全文索引只支持MyISAM表。2、mysql默认对全文检索有单词的字符限制:ft_max_word_len 84,ft_min_word_len 43、MYSQL 全文索引是实现不了like  的效果,只能按单词来查询...

  • 回答 3

    这个最大4g应该是和是否是32位系统无关。

  • 回答 9

    第一种叫外连接 处在join前面的表会全部选择出来,你自己去百度下 说不清第二中就是多表连接,进行笛卡尔积运算自己那拿表去实践 你很快就会明白

  • 回答 4

    一定要卸载干净!!! 1. 在控制面板将mysql管理软件卸载掉 2. 删除两个安装文件,如果没有修改安装路径的默认路径如下1)C:\Program Files  有一个mysql安装目录 ,将整个目录删除 2)另外一个安装路径是一个隐藏文件夹下的mysql目录将隐藏的文件显示...

  • 回答 6

    事实上MySQL 能承受的数据量的多少主要和数据表的结构有关,并不是一个固定的数值。表的结构简单,则能承受的数据量相对比结构复杂时大些。据D.V.B 团队以及Cmshelp 团队做CMS 系统评测时的结果来看,MySQL单表大约在2千万条记录(4G)下能够良好运行,经过数...

  • 回答 5

    事实上MySQL 能承受的数据量的多少主要和数据表的结构有关,并不是一个固定的数值。表的结构简单,则能承受的数据量相对比结构复杂时大些。据D.V.B 团队以及Cmshelp 团队做CMS 系统评测时的结果来看,MySQL单表大约在2千万条记录(4G)下能够良好运行,经过数...

  • 回答 6

    mysql哪个版本比较稳定MySQL的选择要取决于用途的,mysql5.5或者5.7 的版本,网上资源较多mysql的版本如下:1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。3. MySQL C...

没有解决我的问题,去提问