我用谷歌搜索了,但没有提出任何我可以解决的问题.
使用存储过程的性能提升是否显着?
我是否仍然希望将预准备语句与存储过程一起使用,或者它通常是一个还是另一个?
我可以通过PHPMyAdmin创建存储过程并从那里管理它们吗?
对于像这样简单的事情,存储过程会是什么样子 -
SELECT * FROM table a
INNER JOIN otherTable b
ON a.join_id=b.join_id
WHERE someVar = :boundParam
Run Code Online (Sandbox Code Playgroud)
以及PHP如何工作(PDO)来调用它并绑定其参数?
我正在尝试创建一个程序,它将输入数据然后在OUT参数中返回一条消息,但是我收到此消息"参数5用于例行医院.alextest10不是BEFORE触发器中的变量或NEW伪变量"
我有这个作为我的程序:
create procedure alextest10
(IN a_patid CHAR(3), IN a_patnam VARCHAR(12), IN a_consno CHAR(3), IN a_ward CHAR(2),
OUT a_message VARCHAR(50))
BEGIN
set a_message = 'Database updated';
INSERT INTO patient (patient_id, patient_name, consultant_no, ward_no)
values (a_patid, a_patnam, a_consno, a_ward);
end!
Run Code Online (Sandbox Code Playgroud)
这是我的呼叫命令:
call alextest10 ('p99', 'Madeuppy', '999', 'w9', a_message)!
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?
非常感激!
任何人都可以详细解释IN,OUT和INOUT参数之间的区别吗?
谢谢.
PS我正在使用MySQL 5.5
OUTMySQL存储过程的目的是什么?
如果我有一个简单的存储过程,如下所示:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_routine`(
IN iID int
)
BEGIN
select * from table1 where id = iID;
END
Run Code Online (Sandbox Code Playgroud)
这将通过运行给我所有我想要的结果:
call new_routine(7);
Run Code Online (Sandbox Code Playgroud)
那么我为什么要/需要使用OUT?
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_routine`(
IN iID int,
OUT vName varchar(100)
)
BEGIN
select name into vName from table1 where id = iID;
END
Run Code Online (Sandbox Code Playgroud)
并称之为这样
call new_routine(7, @name);
select @name;
Run Code Online (Sandbox Code Playgroud)
哪个会给我一个名字,而不是返回的行中的所有内容?
我已经尝试过谷歌搜索,但显然没有向谷歌提出正确的问题以获得明确的答案.