首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在mysql中存储的proc总是返回0

在MySQL中,存储过程(proc)是一组预编译的SQL语句,它们被存储在数据库中并可以在需要时被调用。存储过程可以接受参数,并且可以包含条件判断、循环、异常处理等逻辑。

当存储过程返回0时,可能有以下几个原因:

  1. 存储过程中的逻辑错误:存储过程中的代码逻辑可能存在错误,导致返回值始终为0。这可能是由于条件判断、循环或异常处理等部分的错误逻辑导致的。需要仔细检查存储过程的代码,确保逻辑正确。
  2. 存储过程中的返回值设置错误:存储过程可以通过设置返回值来返回特定的结果。如果存储过程中的返回值设置错误,可能会导致始终返回0。需要检查存储过程中是否正确设置了返回值。
  3. 存储过程中的查询结果为0:存储过程中可能包含了查询语句,如果查询结果为0,那么存储过程的返回值也会为0。需要检查存储过程中的查询语句,确保其能够返回正确的结果。
  4. 存储过程调用时的参数传递错误:存储过程可以接受参数,如果在调用存储过程时传递的参数有误,可能导致存储过程返回0。需要检查存储过程的参数传递是否正确。

总结起来,当MySQL中存储的存储过程(proc)总是返回0时,需要仔细检查存储过程的代码逻辑、返回值设置、查询语句和参数传递等方面,确保其正确性。如果问题仍然存在,可能需要进一步调试和排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Java中为什么不同的返回类型不算方法重载?

doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名的组成规则我们可以看出,方法的返回类型不是方法签名的组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同的方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名的一部分呢?...总结 在同一个类中定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 中的 valueOf 方法,它有 9 种实现。...方法返回类型不能作为方法重载的依据,因为它不是方法签名的组成部分。

3.4K10
  • 审计对存储在MySQL 8.0中的分类数据的更改

    在之前的博客中,我讨论了如何审计分类数据查询。本篇将介绍如何审计对机密数据所做的数据更改。...特别是对于可能具有数据访问权限但通常不应查看某些数据的管理员。 敏感数据可以与带有标签的数据穿插在一起,例如 公开 未分类 其他 当然,您可以在MySQL Audit中打开常规的插入/更新/选择审计。...-p INSTALL COMPONENT "file://component_audit_api_message_emit"; 在[mysqld]中启用启动时的审计并设置选项。...重新启动MySQL服务器。 注意:有多种方法可以启用审计而无需重新启动。但是您要强制执行审计-因此,上面是您的操作方式。 以下简单过程将用于写入我想在我的审计跟踪中拥有的审计元数据。...FOR和ACTION是写入审计日志的元数据标签。在这种情况下,FOR将具有要更改其级别数据的名称,而ACTION将是在更新(之前和之后),插入或删除时使用的名称。

    4.7K10

    在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

    在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0 ?...| height=0 如上面代码结果所示,在Activity的onCreate()方法中我们尝试获取控件的宽和高,却获取得是0,这是因为 View 绘制和 Activity 的生命周期方法并不同步,即使...: 方法一、在 Activity 的 onWindowFocusChanged() 方法中获取 View 的尺寸。...,例如可以使用延时或者在onCreate()方法中手动调用 View 的测量方法,相对而言以上几种方法更为方便。...---- 最后想说的是,本系列文章为博主对Android知识进行再次梳理,查缺补漏的学习过程,一方面是对自己遗忘的东西加以复习重新掌握,另一方面相信在重新学习的过程中定会有巨大的新收获,如果你也有跟我同样的想法

    1.2K30

    MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程

    http://blog.csdn.net/qq_26525215/article/details/52143733 在上面链接的博客中,写了如何用MySQL语句定义和执行存储过程 Java执行存储过程:...Java演示执行带输入参数的存储过程: 构造 call 转义序列时,请使用 ?(问号)字符来指定 IN 参数。此字符充当要传递给该存储过程的参数值的占位符。...向 setter 方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个 IN 参数,则其序数值为 1。...Java演示执行带输入输出参数的存储过程: 构造 call 转义序列时,请使用 ?(问号)字符来指定 OUT 参数。 此字符充当要从该存储过程返回的参数值的占位符。...当您对于 OUT 参数向 registerOutParameter 方法传递一个值时,不仅必须指定要用于此参数的数据类型,而且必须在存储过程中指定此参数的序号位置或此参数的名称。

    1.1K20

    【重学 MySQL】八十四、深入理解 LEAVE 和 ITERATE 在存储过程中的使用

    【重学 MySQL】八十四、深入理解 LEAVE 和 ITERATE 在存储过程中的使用 在MySQL中,LEAVE 和 ITERATE 是两种重要的流程控制语句,它们主要在存储过程...END WHILE; END // DELIMITER ; CALL test_iterate(); 在这个示例中,当变量i的值小于10时,ITERATE 语句将跳过当前循环的剩余部分并立即开始下一次循环...当i的值大于15时,LEAVE 语句将退出循环。只有当i的值在10到15之间时,才会执行 SELECT 语句输出i的值。...总结 LEAVE 和 ITERATE 是MySQL中用于控制循环流程的重要语句。...这两种语句在存储过程、函数或触发器中的使用可以大大提高MySQL脚本的灵活性和可维护性。

    13800

    MariaDB 存储过程与函数详解

    ,MySQL中创建存储过程和函数使用的语句分别是:CREATE PROCEDURE和CREATE FUNCTION.使用CALL语句来调用存储过程,只能用输出变量返回值.函数可以从语句外调用(即通过引用函数名...param_name表示参数名称,type表示参数的类型,该类型可以使MySQL数据库中任意的类型.创建简单存储过程: 创建一个存储过程Proc(),实现查询lyshark数据表的所有字段.MariaDB...MySQL内部函数的使用方法是一样的,在MySQL中,用户自己定义的存储函数与MySQL内部函数是一个性质的.区别在于,存储函数是用户自己定义的,而内部函数则是开发者编写的.创建存储函数: 创建储存函数...RETURN语句返回一个类型不同于函数的型的值,返回值将被强制为恰当的类型.提示:指定参数为IN,OUT或者INOUT只对PROCEDURE是合法的.FUNCTION中总是默认为IN参数.RETURNS...声明使用变量变量可以在子程序中声明并使用,这些变量的作用范围实在BEGIN...END程序中,本小姐将介绍定义和赋值一个变量,定义变量的语句如下:DECLARE var_name[,varname]..

    1.6K20

    MySQL 存储过程与函数(精简笔记)

    MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)...存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别是:CREATE PROCEDURE和CREATE FUNCTION.使用CALL语句来调用存储过程,只能用输出变量返回值.函数可以从语句外调用...表示参数的类型,该类型可以使MySQL数据库中任意的类型....存储函数的使用方法与MySQL内部函数的使用方法是一样的,在MySQL中,用户自己定义的存储函数与MySQL内部函数是一个性质的.区别在于,存储函数是用户自己定义的,而内部函数则是开发者编写的....提示:指定参数为IN,OUT或者INOUT只对PROCEDURE是合法的.FUNCTION中总是默认为IN参数.RETURNS子句只能对FUNCTION做指定,对函数而言这是强制的.它用来指定函数的返回类型

    2K10

    MySQL如何获取存储过程参数?

    01 MySQL 存储过程的参数 MySQL中的存储过程,可以理解成一段代码,每次调用这段代码,可以帮助你实现对应的功能,例如下面这段代码,就是帮助我们连续插入1000个记录在表t里面: delimiter...当然,在现实工作中,由于各种各样的原因,存储过程总是会存在的。...02 获取参数的2种方案 方法一、使用mysql.proc表(仅限MySQL5.7及以下版本) 在MySQL的元信息表中,可以通过mysql.proc表去查看一个存储过程的参数,如下: mysql...注意:在MySQL8.0中,mysql.proc表被去掉了,这种方法也就不适用了。...作为一名运维同学,可能需要考虑让你的业务方尽可能的将存储过程、函数之类的对象,从MySQL数据库中剥离出来,这样在运维的过程中,可能会更加方便,MySQL的性能会更好。

    3.5K60

    深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧

    在这个全面的GIS技术指南中,我们将一起揭开数据背后的世界,发现地理空间查询在大数据分析中的无限可能!我们将探讨如何有效存储地理空间数据,实现高效的地理空间数据查询,以及如何进行精准的空间数据分析。...MySQL:基础而实用的地理空间查询 1.1 创建表格和数据插入 在MySQL中,我们使用POINT类型存储地理空间数据,并可以利用ST_Point函数插入数据。...这些函数可以帮助我们判断空间对象之间的位置关系,并在此基础上执行相应的查询。 1.5 空间索引的使用 虽然在上面的示例中我们创建了一个空间索引,但要确保它被正确使用并不总是那么简单。...虽然在本示例中我们使用的是 2D 空间数据,但 PostGIS 也支持 3D 空间数据的存储和查询,请根据您的需求选择合适的数据类型和函数。 3....例如,在一个基于位置的推荐系统中,我们可以将地理位置信息和用户喜好信息存储在不同的数据结构中,并通过组合查询来获得推荐结果。

    87210

    oracle与mysql的存储区别_存储过程和触发器的区别和联系

    总结一下oracle和mysql的存储过程的几种区别: 1.创建存储过程语句不同 2.创建函数语句不同 3.传入参数写法不同 4.包的声明方式 5.存储过程返回语句不同 6.存储过程异常处理不同...mysql使用先删除老的存储过程,然后再创建新的存储过程. 2. oracle 存储过程可以定义在package中,也可以定义在Procedures中....(FUNCTION参数总是被认为是IN参数) RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。...SD_FACILITY_PKG.P_ADD_FAC to mysql SD_FACILITY_P_ADD_FAC 5.存储过程返回语句不一样 oracle return; mysql LEAVE proc...Mysql: 没有NO_DATA_FOUND这个属性.但可是使用FOUND_ROWS()方法得到select语句查询出来的数据.如果FOUND_ROWS()得到的值为0,就进入异常处理逻辑. 9.在存储过程中调用存储过程方式的不同

    1.3K10

    MySQL存储过程的创建及调用

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本”     1.创建存储过程     2.调用存储过程     3.存储过程体     4.语句块标签 存储过程的参数...优点(为什么要用存储过程?)...一、存储过程的创建和调用   >存储过程就是具有名字的一段代码,用来完成一个特定的功能。   >创建的存储过程保存在数据库的数据字典中。...  ②在某些语句(例如:leave和iterate语句),需要用到标签 二、存储过程的参数   存储过程可以有0个或多个参数,用于存储过程的定义。...,...]]) ……   ②确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理 墙裂建议:   >输入值使用in参数;   >返回值使用out参数;   >inout参数就尽量的少用

    2.9K20

    玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)

    上一篇存储过程&自定义函数,对存储过程和自定义函数做了一个简单的介绍,但是如何能够写出复杂的存储过程和函数呢?...当参数1为true的时候,返回值1,否则返回值2。 示例 需求:查询t_user表数据,返回:编号、性别(男、女)、姓名。...,返回男女 创建函数: /*删除存储过程proc1*/ DROP FUNCTION IF EXISTS fun1; /*声明结束符为$*/ DELIMITER $ /*创建存储过程proc1*/ CREATE...示例 写一个存储过程,实现用户数据的插入和新增,如果id存在,则修改,不存在则新增,并返回结果 /*删除id=7的记录*/ DELETE FROM t_user WHERE id=7; /*删除存储过程.../*创建存储过程*/ CREATE PROCEDURE proc5(v_count int) BEGIN DECLARE i int DEFAULT 0; a:WHILE i<=v_count

    1.4K30

    Mysql-2

    存储过程 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数...一、存储过程   存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户 通过指定存储过程的名字并给出参数(如果该存储过程带有参数...DELIMITER ; CALL proc_no_para(); 2、只带IN(输入参数)的存储过程    表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值。...中最左边的x个字符 LENGTH(s)返回字符串str中的字符数 LTRIM(str) 从字符串str中切掉开头的空格 POSITION(substr,str) 返回子串substr在字符串str中第一次出现的位置...返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE); WEEK(date) 返回日期date为一年中第几周(0~53) YEAR(date)

    2.7K50

    Mysql系列第十七讲 流程控制语句(高手进阶)

    当参数1为true的时候,返回值1,否则返回值2。 示例 需求:查询t_user表数据,返回:编号、性别(男、女)、姓名。...,返回男女 创建函数: /*删除存储过程proc1*/ DROP FUNCTION IF EXISTS fun1; /*声明结束符为$*/ DELIMITER $ /*创建存储过程proc1*/ CREATE...示例 写一个存储过程,实现用户数据的插入和新增,如果id存在,则修改,不存在则新增,并返回结果 /*删除id=7的记录*/ DELETE FROM t_user WHERE id=7; /*删除存储过程...中循环有3种写法 while:类似于java中的while循环 repeat:类似于java中的do while循环 loop:类似于java中的while(true)死循环,需要在内部进行控制.../*创建存储过程*/ CREATE PROCEDURE proc5(v_count int) BEGIN DECLARE i int DEFAULT 0; a:WHILE i<=v_count

    92953

    玩转Mysql系列 - 第17篇:存储过程&自定义函数详解

    关于自定义函数这块,若mysql内部自带的一些函数无法满足我们的需求的时候,我们可以自己开发一些自定义函数来使用。 所以建议大家掌握mysql中存储过程和自定义函数这块的内容。...mysql默认结束符是分号。 上面存储过程中向t_user表中插入了2条数据。...1 row in set (0.00 sec) 上面的两个自定义变量@a、@b作为入参,然后在存储过程内部进行了修改,又作为了返回值。...类似于java中的方法,但是必须有返回值。 创建函数 create function 函数名(参数名称 参数类型) returns 返回值类型 begin 函数体 end 参数是可选的。...存储过程 函数 返回值 可以有0个或者多个 必须有一个 关键字 procedure function 调用方式 call select

    74430

    MySQL数据库,详解流程控制语句(二)

    创建存储过程: /*删除存储过程proc1*/ DROP PROCEDURE IF EXISTS proc1; /*s删除id=6的记录*/ DELETE FROM t_user WHERE id=6;...,返回男⼥ 创建函数: /*删除存储过程proc1*/ DROP FUNCTION IF EXISTS fun1; /*声明结束符为$*/ DELIMITER $ /*创建存储过程proc1*/ CREATE...后⾯case可以省 略) 这种写法和1中的类似,⼤家⽤上⾯这种语法实现第1中⽤法中的3个⽰例,贴在留⾔中。...if结构 if结构类似于java中的 if..else if...else的语法,如下: if 条件语句1 then 语句1; elseif 条件语句2 then 语句2; ... else 语句n;...示例 写⼀个存储过程,实现⽤户数据的插⼊和新增,如果id存在,则修改,不存在则 新增,并返回结果 /*删除id=7的记录*/ DELETE FROM t_user WHERE id=7; /*删除存储过程

    38420

    MySQL存储过程

    在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。...MySQL的存储过程 存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。...MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT: IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 OUT:该值可在存储过程内部被改变...PROCEDURE [过程1[,过程2…]] 从MySQL的表格中删除一个或多个存储过程。...返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length

    13.7K30

    不懂或不知MySQL中的游标,你可以进来看看

    游标(cursor)是一个存储在MySQL服务器上的数据库查询, 它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游 标之后,应用程序可以根据需要滚动或浏览其中的数据。...注意:MySQL游标可以用于 存储过程,函数,触发器,事件中 2.游标特性 数据库也可以选择不复制结果集 不可更新 游标只能向一个方向行进,并且不可以跳过任何一行数据。...,就可以调用该存储过程了 CALL PROC1(); 得到结果: 这里肯定有小伙伴好奇,customers表里明明有7条记录,为什么只显示了1条记录?...CREATE PROCEDURE PROC2() BEGIN -- 定义两个存放结果的变量 DECLARE FLAG INT DEFAULT 0; DECLARE NAME VARCHAR...,并查询cus表里的数据 CALL PROC2();SELECT * FROM cus; 结果: 结果与customers里的一致,但是这些结果是循环一条一条往下移动的过程中插入的,即这个循环执行了7

    11.2K270
    领券