存储过程怎么使用

article/2025/8/25 13:25:37

1.什么是存储过程?

存储过程是封装了一条或多条SQL的集合。它的好处是简单、高性能、安全。

2.为什么要使用存储过程?

  • 简化复杂的操作,把SQL封装起来容易使用。
    如果所有开发人员和应用程序都使用同一存储过程,则所有使用的代码都是相同的,防止多余执行的步骤保证了数据的一致性。
  • 简化对变动的管理,如果表名列名或者业务逻辑发生变化,只需要改变存储过程中的代码,使用它的人甚至不需要知道这些变化。通过对存储过程限制对基础数据的访问,减少数据讹误的机会(讹误是指无意识或别的原因所导致的数据和讹误)。
  • 调用存储过程比使用单独的SQL要快很多,这提高了性能。

3.存储过程有什么缺点?

存储过程的编写比基本SQL要复杂,对个人技能水平要求较高。
数据库管理员通常限制存储过程的权限,不过幸运的是创建存储过程和使用存储过程的权限是分离的,你可能不能创建自己的存储过程,但仍然可以去执行别的存储过程。

4.怎样去创建存储过程?

Create Procedure 存储过程名()
begin
sql语句;
end;

5.使用和删除存储过程

call 存储过程名;
drop Procedure 存储过程名;

6.使用参数的存储过程

IN 类似形参
OUT 类似返回值
INTO 类似=号赋值
在这里插入图片描述
在这里插入图片描述

要使用该存储过程,需要指定三个变量名,MYSQL中的变量名前面要使用@符号。
Call productpricing(
@pricelow,
@pricehigh,
@priceaverage
)
查询结果,在控制台打印执行存储过程后得到的 pricelow。
Select @pricelow;
如果要显示三个值。
Select @pricelow,@pricehigh,@priceaverage;
下面是创建一个带有接收和输入两个参数的存储过程
在这里插入图片描述
在这里插入图片描述

以上只是存储过程简单的使用,用原文的话来说就是,他们所能完成的工作可以直接使用这些被封装的语句完成,如果说他们还能带来更多的东西,那就是使事情更复杂。

下面将建立一个或许真正能派上用场的智能存储过程
在这里插入图片描述

该存储过程定义了,两个行参一个返回值。
使用declare声明了两个局部变量。
接着一条SQL查询指定订单下所有商品的总金额,赋值给了局部变量。
接着 if 判断,形参 taxrete (不为零则条件成立,加税并将 total赋值给 返回值ototal)

斯巴拉西
下面是官方的分析
在这里插入图片描述
使用该存储过程。
Call ordertotal(2021,0,@total);
Select @total; # 伪数值149.87

Call ordertotal(2021,1,@total);
Select @total; # 加税后 158.86

手机编辑不方便,之后在把代码放进代码块中


http://chatgpt.dhexx.cn/article/aIZHq6rr.shtml

相关文章

SQL创建存储过程

创建SQL存储过程需要使用到的语法 - 创建存储过程 CREATE 存储过程的名称(参数) BEGIN ...需要执行的SQL语句 END- 调用 CALL 存储过程的名称(参数)个人看法,这就是一个函数...无参数 CREATE PROCEDURE p_student_select() BEGIN SELECT * FROM student; ENDCALL …

4.3.1 存储过程的简要介绍

4.3.1 存储过程的简要介绍 1、什么是存储过程? 存储过程是一种命名的PL/SQL代码块。它既可以没有参数,也可以有若干输入、输出参数,甚至可以有多个既作输入又作输出的参数,但他通常没有返回值。 存储过程被保存在数据库中&#x…

储存过程

储存过程是一组为了完成特定功能的SQL语句表,经过编译后储存在数据库中,用户通过指定过程的名字并给定参数来调用执行它。 从常用的操作数据库的SQL语句在执行的时候需要先编译,然后执行,储存过程,则是采用另外一种方式…

java笔试--北京轩宇信息

第一题 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths;/*** <p>功能: 编写程序,在C盘根目录下创建文件myFile.txt&#xff0c;文件内容如下&#xff0c;请注意缩进和换行&#xff1a;* Java* C/C* Python* JavaScripts*/ public…

笔试——中兴

参考达尔文公众号&#xff1a;https://mp.weixin.qq.com/s?__bizMzg5MDIwNjIwMA&mid2247496018&idx1&snf8109b6f5b5ea3a175e52eb7074bb7bc&chksmcfe293c5f8951ad3570a64a07ce0deba1ec12f3c8d0a15bbf1c64ed25e5faca46ef5974fef72&mpshare1&scene23&…

中兴2016笔试题答案Java_中兴Java笔试题

中兴Java笔试题 一、选择题(每题4分,共80分) 1. 编译Java Application 源程序文件将产生相应的字节码文件&#xff0c;这些字节码文件的扩展名为( ) A. .java B. .class C. .html D. . 2. main方法是Java Application程序执行的入口点&#xff0c;关于main方法的方法头以下哪项…

中兴通讯2013校招软件笔试题

关于const的实现机制&#xff0c;请看&#xff1a; http://blog.csdn.net/syzcch/article/details/8182184 define宏定义那个题&#xff1a; http://zhidao.baidu.com/link?urltSvmJ_ytFjwWKBLzDgCfLfW-mdJtTChTab3XzBAbd2x1nGYQCGnqDq__9-dqc_ndlWE1uPeaFcyVXlKOn1CAha …

中兴笔试程序题

文本编辑器&#xff08;15&#xff09; 要求&#xff1a; &#xff08;1&#xff09;编辑文本&#xff1b; &#xff08;2&#xff09;保存、打开指定位置的文本文件&#xff1b; &#xff08;3&#xff09;具有输入输出界面。 代码&#xff1a;&#xff08;此代码在vc6.…

中兴2016校招软件在线笔试题

面试经验可以参考我的另一篇文章&#xff0c;是7月初参加openday面试的&#xff0c;文章链接http://blog.csdn.net/dandelion1314/article/details/47009585 招聘群里有人发的招聘时间安排&#xff0c;仅供参考。 据说今年是中兴的第一次在线笔试&#xff0c;摄像头监控&am…

MeasureSpec的理解和详尽源码分析

package cc.ww;import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.MarginLayoutParams; import android.widget.LinearLayout;/*** author http://blog.csdn.net/lfdfhl* * 文档描…

自定义View 测量过程(Measure)

目录 一、作用二、储备知识2.2 ViewGroup.LayoutParams2.3 MeasureSpec 三、measure过程详解3.1 单一View的measure过程具体流程源码分析源码总结 3.2 ViewGroup的measure过程测量原理具体流程源码分析流程总结 四、总结 一、作用 测量View的宽 / 高 在某些情况下&#xff0c;…

Android MeasureSpec解析

1. MeasureSpec组成 MeasureSpec是View的一个内部类&#xff0c;由一个32位的int值组成&#xff0c;前两位代表SpecMode测量模式&#xff0c;后30位代表SpecSize大小值。 其中测量模式共有三种&#xff1a; EXACTLY&#xff08;确定&#xff09;&#xff1a;父控件为子View指…

使用View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED)在在onCreate中获得控件的大小问题

android 在onCreate中获得控件的大小 int w View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); edt_height.measure(w, h); int height edt_height.getMeasuredHeight(); int w…

MeasureSpec中三种模式:UNSPECIFIED,AT_MOST,EXACTLY

在自定义View和ViewGroup的时候&#xff0c;我们经常会遇到int型的MeasureSpec来表示一个组件的大小&#xff0c;这个变量里面不仅有组件的尺寸大小&#xff0c;还有大小的模式。 这个大小的模式&#xff0c;有点难以理解。在系统中组件的大小模式有三种&#xff1a; 1.精确模式…

评测指标(metrics)

评测指标(metrics) metric主要用来评测机器学习模型的好坏程度,不同的任务应该选择不同的评价指标, 分类,回归和排序问题应该选择不同的评价函数. 不同的问题应该不同对待,即使都是 分类问题也不应该唯评价函数论,不同问题不同分析. 回归(Regression) 均方误差(MSE) (1) l ( y…

MeasureSpec学习—对Integer.MAX_VALUE 2的认识

在自定义View和ViewGroup的时候&#xff0c;我们经常会遇到int型的 MeasureSpec 来表示一个组件的大小&#xff0c;这个变量里面不仅有组件的尺寸大小&#xff0c;还有大小的模式。 这个大小的模式&#xff0c;有点难以理解。在系统中组件的大小模式有三种&#xff1a; 1.精确…

理解Android中的MeasureSpec

文章收藏的好句子&#xff1a;永远要相信美好的事情即将发生。 ps&#xff1a;本文源码是基于 Android Api 31 来分析的 目录 1、MeasureSpec 1、1 SpecMode 1、2 MeasureSpec 的 int 值和 LayoutParams 的对应关系 1、MeasureSpec 我们在 Android 手机上看到的界面&#xff0c…

android Measurespec测量模式

MeasureSpecs 类 1、是一个32位的二进制数&#xff0c;由模式&#xff08;mode&#xff09;和大小&#xff08;size&#xff09;组成&#xff0c; 2、其中&#xff1a;32和31位代表测量模式&#xff08;mode&#xff09;、后30位代表测量大小&#xff08;size&#xff09; 3、…

MeasureSpec源码解读

文章目录 MeasureSpec的源码MeasureSpec与LayoutParams 今天来讲讲MeasureSpec吧。因为他与View的测量流程相关性很大&#xff0c;只有正确的理解了MeasureSpec的工作原理&#xff0c;我们才能更好的自定义View。那么MeasureSpec它的作用是什么呢&#xff1f;一般来说&#xff…

理解 MeasureSpec

在开始本篇文章之前&#xff0c;我们先看一段代码&#xff1a; Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expendSpec MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMe…