sas*_*asi 2 mysql stored-procedures
我刚刚创建了一个存储过程,它接受一个参数(示例id)并将与该id相关的列从一个表复制到另一个表.我如何创建以子查询结果为参数的存储过程,数据库是mysql ..
这是我的例子..我想传递从表到程序选择id的查询.
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`sasi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sasi`(IN idno int(4))
BEGIN
INSERT INTO user5(id,email,address,fullname,gender,phonenumber)
SELECT id,email,address,fullname,gender,phonenumber FROM user1 where id != idno;
END$$
DELIMITER ;
call sasi(4);
Run Code Online (Sandbox Code Playgroud)
要将查询结果传递到存储过程,请将查询括在括号中.
例如:
call sasi((select max(id) from sometable where somecondition));
Run Code Online (Sandbox Code Playgroud)
您必须确保查询仅返回一行和一列.
如果要多次调用该过程,每行一次,请将您的过程更改为FUNCTION:
CREATE FUNCTION sasi(idno int(4))
RETURNS int(4)
BEGIN
INSERT INTO user5(id,email,address,fullname,gender,phonenumber)
SELECT id,email,address,fullname,gender,phonenumber FROM user1 where id != idno;
RETURN idno;
END
Run Code Online (Sandbox Code Playgroud)
然后像这样称呼它:
select sasi(id)
from table
where ...
Run Code Online (Sandbox Code Playgroud)
sasi(id)将匹配该where子句的每一行调用.