MySQL 存储过程传参之in, out, inout 参数用法

存储过程传参:存储过程的括号里,可以声明参数。 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..)

in :给参数传入值,定义的参数就得到了值

out:模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程(在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值)

inout:调用者还可以通过 inout 参数传递值给存储过程,也可以从存储过程内部传值给调用者

如果仅仅想把数据传给 MySQL 存储过程,那就使用“in” 类型参数;

如果仅仅从 MySQL 存储过程返回值,那就使用“out” 类型参数;

如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型参数。

MySQL 存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in"。

实例一:存储过程传参 in

DELIMITER $$
CREATE PROCEDURE p1(IN num INT)
BEGIN
  DECLARE i INT DEFAULT 0;
  DECLARE total INT DEFAULT 0;
  WHILE i<=num DO
    SET total := i + total;
    SET i := i+1;
  END WHILE;
  SELECT total;
END$$

实例二:存储过程传参 out

CREATE PROCEDURE p2(OUT num INT)
BEGIN
 SELECT num AS num_1;
 IF (num IS NOT NULL) THEN
 SET num = num + 1;
 SELECT num AS num_2;
 ELSE
 SELECT 1 INTO num;
 END IF;
 SELECT num AS num_3;
END$$
SET @num = 10$$
CALL p2(@num)$$
SELECT @num AS num_out$$

实例三:存储过程传参 inout

CREATE PROCEDURE p3(INOUT age INT)
BEGIN
  SET age := age + 20;
END$$
set @currage =18$$
call p3(@currage)$$
select @currage$$

时间: 2024-08-10 23:28:07

MySQL 存储过程传参之in, out, inout 参数用法的相关文章

mysql存储过程中in、out、inout参数使用实际案例

1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)//为了避免存储过程中分号(";")结束语句,我们使用分隔符告诉mysql解释器,该段命令是否已经结束了./**案例功能:求1-n的和开发者:徐守威时间:2016-08-13*/delimiter $create procedure p1(in n int)begin declare total int default 0; declare num int default 0; while num < n d

mysql存储过程中in、out、inout参数使用

in 代表输入,意思说你的参数要传到存过过程的过程里面去.基本可以理解为传入function的参数,而如果该参数是个变量,那么整个procedure过程结束后,不会影响外部的变量值. /案例功能:求1-n的和开发者:徐守威时间:2016-08-13/delimiter $create procedure p1(in n int)begindeclare total int default 0;declare num int default 0;while num < n doset num:=n

js方法用来获取路径传参上所带的参数

//js方法用来获取路径传参上所带的参数 function GetQueryString(param) { var reg = new RegExp("(^|&)" + param + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) { return r[2]; } return null;

mysql存储过程出参入参,sqlserver很熟悉的一件事到mysql,捣鼓了大半天。记录一下提醒自己。勿看

create PROCEDURE myTestProcname(in score int ,out result varchar(100))BEGINIF score>60 THENset result='yes';ELSEset result='no';END if; END 调用 CALL myTestProcname(50,@result); select @result //为了看下出参结果 附带转来的一点语法 一.创建存储过程1.基本语法:create procedure sp_nam

axios用post传参,后端无法获取参数问题

最近用vue+nodejs写项目,前端使用axios向后台传参,发现后台接收不到参数. 后台是node+express框架,然后使用了body-parser包接收参数,配置如下: const express = require('express') const bodyParser = require('body-parser') const app = express() app.listen(8888, () => { console.log('Server start on 8888...

javascript Url 传参的坑,base64参数和url参数之间的转移

在url传参时会对特殊字符进行转义,所以通过base64传参是需要进行处理 简单说下base64的使用 1,在项目根目录下安装 npm install --save js-base642,在项目文件中引入 let Base64 = require('js-base64').Base64 import { Base64 } from "js-base64"; 3,在项目文件中使用 Base64.encode('大元') // fdsfds5f34Base64.decode('fdsfds

MYSQL预处理传参不区分大小写解决办法

问题:预处理语句为:SELECT * FROM WHERE name=? 如果传送的参数为“admin” “ADmin” “ADMIN” “ADimn”等,结果处理后的语句为SELECT * FROM WHERE name=‘admin’ 解决办法:要查询的字段前加BINARY ,如: SELECT * FROM WHERE BINARY name=? 可能原因:调用mysql API将执行预处理语句,可是mysql对这种情况不区分大小写

Vue 路由传参-使用query方式传递参数

2018-08-15 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="../vue.js"></script> <script src="https://cdn.bootcss.com/vue-r

a标签跳页传参,以及截取URL参数

<a href="dd.index?aa=1&&bb=2"></a> //截取URL参数 // console.log(window.location.search); function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r