mysql call procedure into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量...

本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法。分享给大家供大家参考,具体如下:

存储过程创建(CREATE PROCEDURE)和调用(CALL)

这个咱就不说什么定义啦术语啦啥的,直接看着实例来慢慢熟悉它。完事呢,咱们来创建一个名为GetAllProducts()的简单存储过程哈,这个GetAllProducts()存储过程呢,主要是用来从products表中选择所有产品。咱们来启动 mysql 客户端工具并键入以下命令:

DELIMITER //

CREATE PROCEDURE GetAllProducts()

BEGIN

SELECT * FROM products;

END //

DELIMITER ;

咱们来详细看下上面的sql哈:

第一个命令是DELIMITER //,它与存储过程语法无关。 DELIMITER语句将标准分隔符 - 分号(;)更改为://。 在这种情况下,分隔符从分号(;)更改为双斜杠//。为什么我们必须更改分隔符? 因为我们想将存储过程作为整体传递给服务器,而不是让mysql工具一次解释每个语句。 在END关键字之后,使用分隔符//来指示存储过程的结束。 最后一个命令(DELIMITER;)将分隔符更改回分号(;)。

使用CREATE PROCEDURE语句创建一个新的存储过程。在CREATE PROCEDURE语句之后指定存储过程的名称。在这个示例中,存储过程的名称为:GetAllProducts,并把括号放在存储过程的名字之后。

BEGIN和END之间的部分称为存储过程的主体。将声明性SQL语句放在主体中以处理业务逻辑。 在这个存储过程中,我们使用一个简单的select查询来查询products表中的数据。

通过上面的sql,咱们就算是创建了一个存储过程了,完事我们就来调用存储过程,来看下调用语法:

CALL STORED_PROCEDURE_NAME();

再来看下调用GetAllProducts()存储过程的具体sql:

CALL GetAllProducts();

运行上面的sql你就会看到你在存储过程中的sql的运行结果了。

变量创建(DECLARE)和赋值(SET)

我们都知道,变量是一个命名数据对象,变量的值可以在存储过程执行期间更改。我们接下来就尝试使用存储过程中的变量来保存直接/间接结果。 这些变量是存储过程的本地变量,但是我们得注意,变量必须先声明后,才能使用它。而我们如果要在存储过程中声明一个变量,可以使用DECLARE语句,来看下sql语法:

DECLARE variable_name datatype(size) DEFAULT default_value;

咱们来看下上面的sql具体是什么意思:

首先,在DECLARE关键字后面要指定变量名。变量名必须遵循MySQL表列名称的命名规则。

其次,指定变量的数据类型及其大小。变量可以有任何mysql数据类型,如INT,VARCHAR,DATETIME等。

最后,当声明一个变量时,它的初始值为NULL。但是可以使用DEFAULT关键字为变量分配默认值。

咱们接下来就来声明一个名为total_sale的变量,数据类型为INT,默认值为0。来看下sql:

DECLARE total_sale INT DEFAULT 0;

其中,mysql允许使用单个DECLARE语句声明共享相同数据类型的两个或多个变量,来看个sql:

DECLARE x, y INT DEFAULT 0;

在上面的sql中,我们声明了两个整数变量x和y,并将其默认值设置为0。完事呢,既然变量设置完了,接下来就该分配值了,我们如果要为变量分配一个值,可以使用SET语句,来看个实例:

DECLARE total_count INT DEFAULT 0;

SET total_count = 10;

在上面的sql语句中,我们分配total_count变量的值为10。完事除了SET语句之外,还可以使用SELECT INTO语句将查询的结果分配给一个变量,来看实例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于java_关于Java基础

一、方法的重载与重写方法重载(overload)是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。所谓方法重载是指在一个类中,多个方法的方法名相同,但是参数…

java map 转string_java-将Map String,Object转换为Map String,String

java-将Map 转换为Map 如何将Map转换为Map?这不起作用:Map map new HashMap(); //Object is containing StringMap newMap new HashMap(map);11个解决方案37 votes现在我们有了Java 8 / streams,我们可以在列表中添加一个可能的答案&#xf…

java gui 线程_如何在java中将消息从工作线程传递给GUI

您必须使用SwingUtilities.invokeLater,因为只能从事件派发线程访问Swing组件。这个方法的javadoc有一个关于线程的Swing教程的链接。点击此链接。这是一个例子:public class SwingWithThread {private JLabel label;// ...public void startBackgroundT…

java for each 原理_Java for each实现机制代码原理解析

源测试代码如下public class ForEachTest {public void test4Iterate(Iterable strings) {for (String str : strings) {System.out.println(str);}}public void test4Array(String[] strings) {for (String str : strings) {System.out.println(str);}}}执行编译命令javac For…

java输出九九乘法口诀表_java编程打印“九九乘法口诀表”的程序

其实就这几行代码,我大体意思已经写明白了,你还想知道什么,还是你没看懂这几行代码?/** main方法,一个java程序要运行,必须有这个方法,写法是固定的,记住就行了 */public static voi…

学java交学费包分配_java 学生缴学费案例:

/**学生缴学费案例: 学生类(Student)有两个字段: name(名字)和isFee(是否交学费的状态),有一个方法:交学费(fees)。每 一个学生都是通过student类new出来的一个对象,现在创建一个数组存放多个学生对象,再判断数组 中的学生是否已经缴费,如果没有,则学生的交学费方法。 */ //描述…

java web删除文件_Web开发为了java端程序能删除文件的解决办法

Web开发为了java端程序能删除文件,必须在.../jre/lib/security/java.policy文件中添加以下两个中的任何一段代码进去。注:必须是服务器的本地文件,局域网内的其他机器文件根本不能访问。一,grant codeBase "file:/d:/-"…

如何用java对接口发送请求_7. 用Java做接口测试1-发送HTTP请求和接收HTTP响应

前面的文章介绍了使用Postman、Fiddler做接口测试,现在咱们进入代码阶段。我会使用Java做示例,讲解如何使用Java做接口自动化测试。所以,这一部分需要一些Java代码基础,需要掌握java的代码结构、类、对象、接口、List、Map、多态等…

solr java浏览器访问_solr解决访问安全

Tomcat7,solr3.6,mmseg1.81:环境的搭建1:解压tomcat,solr,mmseg4j2:复制dist文件夹下apache-solr.war到tomcat的webapp文件夹下,修改文件名为solr(不该也行,这里修改文件…

java heap buffer direct buffer_java NIO - DirectBuffer 和 HeapBuffer

问题 :DirectBuffer 属于堆外存,那应该还是属于用户内存,而不是内核内存?FileChannel 的read(ByteBuffer dst)函数,write(ByteBuffer src)函数中,如果传入的参数是HeapBuffer类型,则会临时申请一块DirectBuffer,进行数…

yii2 提供接口给java_yii2写api接口步骤

yii2写api接口步骤Yii2如何实现RESTful风格的API(推荐:《YII教程》 )1、建立单独的应用程序为了增加程序的可维护性,易操作性,我们选择新建一套应用程序,这也是为了和前台应用、后台应用区分开操作。在WEB前端(frontend)和后端(ba…

java caller_js中的caller和callee属性

caller返回一个对函数的引用,该函数调用了当前函数。functionName.callerfunctionName 对象是所执行函数的名称。如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数.该属…

mysql 备份 php_PHP备份/还原MySQL数据库的代码

一、备份数据库并下载到本地// 设置SQL文件保存文件名$filenamedate("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";// 所保存的文件名header("Content-disposition:filename".$filename);header("Content-type:application/octetstrea…

java代码修改触发编译_gcc -O0仍然优化了“未使用”的代码 . 是否有一个编译标志来改变它?...

当我在this question中提出时,gcc正在移除(是的,使用 -O0 )一行代码 _mm_div_ss(s1, s2); ,大概是因为结果未保存 . 但是,这应该触发浮点异常并引发SIGFPE,如果删除调用则不会发生这种情况 .Question :是否…

java第二部分项目_Java_第二次作业:项目构思与实现

写在最前:我我我我我我靠,以后再也不再ddl截止前1小时调试程序了!之前在DDL前1小时修改程序,当我改完后,我想着,再把之前的测试样例跑一遍,如果都对就OK了。就在这时,问题出现了&…

java远程插件动态注册机制_Spring运行时动态注册bean的方法

在spring运行时,动态的添加bean,dapeng框架在解析xml的字段时,使用到了动态注册,注册了一个实现了FactoryBean类!定义一个没有被Spring管理的Controllerpublic class UserController implements InitializingBean{private UserSer…

java变量用来干嘛_Java

一、Maven的简介1、Maven是什么?Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档&am…

mysql 视图 数据相加_MySQL

查看安装路径ps -ef|grep mysql1,配置linux虚拟机,修改IP????? vim /etc/sysconfig/network-scripts/ifcfg-eth02,配置完网卡之后,执行清空命令3,reboot查看生产环境上传文件MySQL5.5编译方式安装过程参考连接&am…

mllib协同过滤 java实现_协同过滤(ALS)算法介绍及Spark MLlib调用实例(Scala/Java/Python)...

协同过滤算法介绍:协同过滤常被用于推荐系统。这类技术目标在于填充“用户-商品”联系矩阵中的缺失项。Spark.ml目前支持基于模型的协同过滤,其中用户和商品以少量的潜在因子来描述,用以预测缺失项。Spark.ml使用交替最小二乘(ALS…

java编程启蒙_程序设计入门—Java语言

第一周:做点计算1.1 第一个程序如何下载、安装Eclipse和JRE,并且简单介绍一下这个软件的几个主要部分;如何在Eclipse中编辑、编译和运行程序;详解第一个程序:程序框架、输出、出错怎么办;做点计算&#xff…