存储过程

MySQL存储过程详解 mysql 存储过程

旧时模样 提交于 2020-01-20 05:39:49
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化

MySQL存储过程详解(转)

荒凉一梦 提交于 2020-01-20 01:21:10
1. 存储过程简介 我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划

存储过程详解

与世无争的帅哥 提交于 2020-01-20 01:10:07
存储过程简介 什么是存储过程 :存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。 存储过程的好处 : 1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。 2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。 3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。 小结:总之存储过程是好东西,在做项目时属于必备利器,下面介绍存储过程的基本语法。 存储过程的语法和参数讲解 存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS

SQLSERVER存储过程语法的具体解释

故事扮演 提交于 2020-01-20 01:08:20
SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ]   [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]   [ FOR REPLICATION ]   AS sql_statement [ ...n ] 一、參数简单介绍   1、 procedure_name   新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其全部者必须唯一。   要创建局部暂时过程,能够在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局暂时过程。能够在 procedure_name 前面加两个编号符 (##procedure_name)。完整的名称(包含 # 或 ##)不能超过 128 个字符。指定过程全部者的名称是可选的。   2、;number   是可选的整数。用来对同名的过程分组,以便用一条 Drop PROCEDURE 语句就可以将同组的过程一起除去。比如。名为 orders 的应用程序使用的过程能够命名为 orderproc;1

SQLSERVER存储过程语法具体解释

十年热恋 提交于 2020-01-20 01:07:41
SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ]   [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]   [ FOR REPLICATION ]   AS sql_statement [ ...n ] 一、參数简单介绍   1、 procedure_name   新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其全部者必须唯一。   要创建局部暂时过程,能够在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局暂时过程,能够在 procedure_name 前面加两个编号符 (##procedure_name)。完整的名称(包含 # 或 ##)不能超过 128 个字符。指定过程全部者的名称是可选的。   2、;number   是可选的整数,用来对同名的过程分组,以便用一条 Drop PROCEDURE 语句就可以将同组的过程一起除去。比如,名为 orders 的应用程序使用的过程能够命名为 orderproc;1

Java基础学习到进阶自我总结

谁说我不能喝 提交于 2020-01-19 20:34:50
Java基础学习到进阶自我总结十 2020-01-15 JDBC调用并返回存储过程结果集 2020-01-15 JDBC调用并返回存储过程结果集 public static void main ( String [ ] args ) { try { //获取连接 Connection conn = DbUtil . getConn ( ) ; String sql = "call pro_stu_sco(?)" ; //创建数据库操作类型 CallableStatement cstm = conn . prepareCall ( sql ) ; //注册传出参数的数据类型 cstm . registerOutParameter ( 1 , OracleTypes . CURSOR ) ; //执行 cstm . execute ( ) ; ResultSet rs = ( ResultSet ) cstm . getObject ( 1 ) ; //将返回的结果集隐式转换成ResultSet类型 //遍历结果集 while ( rs . next ( ) ) { String name = rs . getString ( "name" ) ; String sno = rs . getString ( "student_no" ) ; int chn = rs . getInt

存储过程学习笔记

醉酒当歌 提交于 2020-01-19 04:39:12
业务逻辑应该放在存储过程还是业务层应用程序 放到存储过程可能会提高执行效率、增加安全性,但也会增加数据库资源消耗,不利于数据库迁移;放到业务层更利于分层和维护。 我是做web的,对存储过程的使用少之又少,其他领域可能更适合它吧。 以后有用到的话会继续学习补充。 来源: CSDN 作者: 手里干 链接: https://blog.csdn.net/qq_38413756/article/details/103925318

新闻视频 15讲 编写(新闻表)剩下的存储过程 关于TODO 注释的作用

你离开我真会死。 提交于 2020-01-18 23:16:23
今天把关于新闻表的存储过程写完 //TODO: 文字 这个是用来做什么用的呢? 当我们在使用 PDF 阅读器的时候,当我们看到一半,不小心关闭的时候,下次再打开,还是会回到上次看到的地方,能记住你上次阅读的位置。能自动定位到你上次的地方。VS里面的 TODO 注释 也是起到一个书签的作用,当我们做了某些工作,而要过几天后再做的时候,那么我们做一个TODO标签,下次打开VS的时候,我们就可以查看一下之前已经定义好的TODO标记。也是起到一个记忆的作用,我们现在打开VS 当我们双击下面的 标题的时候 会自动 跳到代码 一个项目中,至少1个月,那么你做到哪里,你不一定会很记得。这个时候如果用一个TODO 就会显示你还有什么任务,而且还可以定位到代码。 继续。写完剩下的存储过程。对照着 数据库关系表来写 group by 要在 order by 的下面 而且 order by 里面 没有的,要放在 group by里面(这是我自己理解的) 下面是本节讲到的 存储过程 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <李鹏> -- Create date: <2011-10-17 12:00> -- Description:

数据库访问性能优化

帅比萌擦擦* 提交于 2020-01-18 09:23:35
特别说明: 1、 本文只是面对数据库应用开发的程序员,不适合专业 DBA , DBA 在数据库性能优化方面需要了解更多的知识; 2、 本文许多示例及概念是基于 Oracle 数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于 KV 数据库或内存数据库或者是基于 SSD 技术的数据库; 3、 本文未深入数据库优化中最核心的执行计划分析技术。 读者对像: 开发人员: 如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化。 架构师: 如果你已经是数据库应用的架构师,那本文的知识你应该清楚 90% ,否则你可能是一个喜欢折腾的架构师。 DBA (数据库管理员): 大型数据库优化的知识非常复杂,本文只是从程序员的角度来谈性能优化, DBA 除了需要了解这些知识外,还需要深入数据库的内部体系架构来解决问题。 引言 在网上有很多文章介绍数据库优化知识,但是大部份文章只是对某个一个方面进行说明,而对于我们程序员来说这种介绍并不能很好的掌握优化知识,因为很多介绍只是对一些特定的场景优化的,所以反而有时会产生误导或让程序员感觉不明白其中的奥妙而对数据库优化感觉很神秘。 很多程序员总是问如何学习数据库优化,有没有好的教材之类的问题。在书店也看到了许多数据库优化的专业书籍,但是感觉更多是面向 DBA 或者是 PL/SQL 开发方面的知识

微课程 | 第十三课《全局序列视频演示》

耗尽温柔 提交于 2020-01-18 08:12:33
微课程 | 第十三课《全局序列视频演示》 上一期我们介绍了全局序列的原理,接下来我们通过视频来演示一下全局序列功能。我们来看一下这两种全局序列是怎么工作的。 时间戳算法 首先是 snowflake ,也就是所谓时间戳算法。 微课程 | 第十三课《全局序列视频演示》 默认的是直接使用时间戳算法,在实际的使用中先设置一下。在 server.xml 里面有一个叫 sequnceHandlerType 的属性。值为 2 表示时间戳类型,其它数值在文档中有详细介绍。我们去配置一个有全局序列的表。tb_hash_sharding_er2 表里面的 autoIncrement 属性为 true。target 是用来配置的全局序列的。然后 snowflake 算法还有一个工作节点,它标识了机器的 ID 。在配置文件当中分别有两行配置。这两行是一个联合主键,只要在不同机器上,联合值就不一样,那么就实现了标识。登录一个 dble 的流量端口。查看刚刚建的表是空的。再看一下这张表的结构,一共是三行。第一行数据类型是 bigint ,因为 snowflake 是一个 64 位的整数。64 位的整数超过了一般 int 的长度,所以我们选用 bigint 存储,这里我们需要注意。然后我们插入一条数据,看到已经生成了一个意向的序列号。然后我们再插入另外一个值。可以看到生成了一个完全不一样的序列号