当前位置:首页 » 存储配置 » mysql存储过程多个参数

mysql存储过程多个参数

发布时间: 2022-09-26 14:59:10

Ⅰ mysql存储过程能不能输入多个参数的 如果能。。请给一个例子。谢谢

mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld2(
-> IN vUserName VARCHAR(10),
-> OUT vOutValue VARCHAR(10),
-> INOUT vInOutValue VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> SET vOutValue = 'A';
-> SET vInOutValue = 'B';
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql> call HelloWorld2('Edward', @a, @b)//
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward |
+-----------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select @a//
+------+
| @a |
+------+
| A |
+------+
1 row in set (0.00 sec)

mysql> select @b//
+------+
| @b |
+------+
| B |
+------+
1 row in set (0.00 sec)

Ⅱ mysql 存储过程

.关于MySQL的存储过程

存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL存储过程的创建

(1).格式

MySQL存储过程创建的格式:CREATE PROCEDURE过程名([过程参数[,...]])
[特性...]过程体

这里先举个例子:

  • mysql>DELIMITER//

  • mysql>CREATEPROCEDUREproc1(OUTsint)

  • ->BEGIN

  • ->SELECTCOUNT(*)INTOsFROMuser;

  • ->END

  • ->//

  • mysql>DELIMITER;


  • 注:
  • (1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

    (2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

    (3)过程体的开始与结束使用BEGIN与END进行标识。

Ⅲ mysql存储过程传多个参数,但并不是所有参数全输入,这要怎么写,

mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld2(
-> IN vUserName VARCHAR(10),
-> OUT vOutValue VARCHAR(10),
-> INOUT vInOutValue VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> SET vOutValue = 'A';
-> SET vInOutValue = 'B';
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql> call HelloWorld2('Edward', @a, @b)//
+-----------------------------+
| CONCAT('Hello ', vUserName) |

php 调用mysql存储过程 输入多个参数,出参只需一个如何写

以下只是个例子
CREATE procere test
@n1 char(10),
@n2 char(10),
@n3 char(10),
@n4 char(10),
@n5 char(10),
@n6 char(10),
@n7 char(10),
@n8 datetime,
@n9 datetime,
@n10 int

as
select * --------这部分请将传入的参数带入查询的条件中
from table1 t1,table2 t2,table3 t3
where deldate between @n8 and @n9
and t1.ponum = t2.ponum
and t2.partnum = t3.partnum
and t3.layer =@n1

GO

Ⅳ mysql存储过程

MySQL存储过程创建的格式如下:
CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...] 过程体
举例代码如下:

CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END

存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
过程体的开始与结束使用BEGIN与END进行标识。
注意:MySQL在5.0以前并不支持存储过程

Ⅵ mysql存储过程中in传的变量有多个

于在mysql的存储过程中,实现类似where id in(1,2,3,...)的功能,有兴趣的朋友参考学习下。
sql语句:

复制代码代码示例:
select * from table_name t where t.field1 in (1,2,3,4,...);
当在写存储过程in中的列表用个传入参数代入时,可以使用如下的方式。
以下代码使用find_in_set函数:

复制代码代码示例:
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
另外一个广场,就是组装字符串,然后执行:

复制代码代码示例:
DROP PROCEDURE IF EXISTS photography.Proc_Test;
CREATE PROCEDURE photography.`Proc_Test`(param1 varchar(1000))
BEGIN
set @id = param1;
set @sel = 'select * from access_record t where t.ID in (';
set @sel_2 = ')';
set @sentence = concat(@sel,@id,@sel_2); -- 连接字符串生成要执行的SQL语句
prepare stmt from @sentence; -- 预编释一下。 “stmt”预编释变量的名称,
execute stmt; -- 执行SQL语句
deallocate prepare stmt; -- 释放

Ⅶ mysql 存储过程参数

MySQL 存储过程, 定义参数, 不需要加那个 @


例子代码如下:


mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld1(vUserName VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> call HelloWorld1('Edward');
-> //
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward |
+-----------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)

Ⅷ mysql 存储过程参数问题

表名是不可以直接用变量,你可以多看看 PREPARE用法。
eg:
DROP PROCEDURE IF EXISTS `table`;
DELIMITER //
CREATE PROCEDURE `table`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('SELECT count(1) FROM ', tname);
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
call table('test');

Ⅸ mysql 存储过程 传多个参数无法识别

存储过程里的递归调用传的是一个参数,这肯定不对
while(done = 0) do
call iterateCategory(b);
fetch c into b;
end while;

Ⅹ Mysql存储过程的多参数问题

书写插入语句出错,字段附在表后,values后接真实数据

insert into student values(id,name,chinese,english,math);

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:516
微博数据库设计 发布:2025-07-05 15:30:55 浏览:20
linux485 发布:2025-07-05 14:38:28 浏览:299
php用的软件 发布:2025-07-05 14:06:22 浏览:751
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:427
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:689
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:234
java的开发流程 发布:2025-07-05 12:45:11 浏览:681
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:278
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:828