美文网首页
隐藏在存储过程、自定义函数输入参数中的一个“暗坑”

隐藏在存储过程、自定义函数输入参数中的一个“暗坑”

作者: 工程师54 | 来源:发表于2021-03-30 12:10 被阅读0次

     总结血的教训:输入参数名和程序体中涉及的表字段名“千万不要重名”,如下:

create procedure sp_test(...,in p1 varchar(20),...)
begin
    ......
    select aa into bb from table1 where p1 = '111' ;
    ......
end ;

    以上输入参数中有一个p1,程序体中使用到的表有一个字段也叫p1,此时可能正常执行,也可以能无法执行以上select语句,总之会出现一些莫名其妙的古怪错误,很耽误查错时间。

     为避免以上暗坑,有两个解决办法:

      1、输入参数改名,确保不要和用到的表字段名重名,如以上输入参数p1修改为p11。

       2、程序体中的涉及到重名字段的语句用动态语句,如

set sql = concat('select aa into bb from table1 where p1 = ''',p1,'''') ;

相关文章

  • 隐藏在存储过程、自定义函数输入参数中的一个“暗坑”

    总结血的教训:输入参数名和程序体中涉及的表字段名“千万不要重名”,如下: create procedure s...

  • 2018-07-14 函数和参数

    自定义函数 使用def语句自定义函数,其后为函数名(输入参数): 函数体在缩进块中编写。输入参数中,必选参数在前,...

  • MySQL存储过程

    存储过程 创建存储过程 执行存储过程 参数: 带有输入参数的存储过程 -- 需求:传入一个员工的id,查询员工信息...

  • chapter12_数据库编程_3_存储过程

    存储过程(1) 存储过程是一个程序代码,存储在数据库中(2) 作用1° 接受输入参数,并以输出参数的格式向调用过程...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • Mysql学习笔记(6)-存储过程

    目录: 一.什么是存储过程 二.六种存储过程 1.带有输入参数的存储过程 2.带有输出参数的存储过程 3.带有输入...

  • Ooracle-自定义函数

    需求:判断某个字符是否为数字 自定义函数过程 通过存储过程调用自定义函数 以上为自定义函数并且通过存储过程调用该函...

  • Swift函数

    概览函数定义隐式返回返回元组(实现多值返回)函数参数参数标签默认参数值可变参数输入输出参数函数重载内联函数函数类型...

  • Java调用存储过程

    Java调用存储过程 调用存储过程 调用存储函数 cursor作为out参数返回

  • python--用装饰器做参数检查

    编写自定义python函数后,一般有一个参数检查过程,检查输入的参数是否是定义的类型,参数检查可以避免一些明显错误...

网友评论

      本文标题:隐藏在存储过程、自定义函数输入参数中的一个“暗坑”

      本文链接:https://www.haomeiwen.com/subject/rynwhltx.html