如何将 Oracle 存储过程转换为 MySQL
How to convert Oracle stored procedure to MySQL
我在 oracle
中做了这些 SQL 语句
create or replace procedure teacherlist(lists out SYS_REFCURSOR )
is
begin
open lists for
select teacherid,teachername,status,email,contact,address
from teacher;
end;
但现在我必须在 MySQL 中为 PHPMyAdmin 执行相同的存储过程,我是这样做的:
DELIMITER $$
CREATE PROCEDURE `teacherlist`(OUT `v_stuid` VARCHAR(10), OUT `v_teachername` VARCHAR(100), OUT `v_status` VARCHAR(20), OUT `v_email` VARCHAR(40), OUT `v_contact` VARCHAR(20), OUT `v_address` VARCHAR(100))
begin
DECLARE v_teacherid varchar(10);
DECLARE v_teachername varchar(100);
DECLARE v_status varchar(20);
DECLARE v_email varchar(40);
DECLARE v_contact varchar(20);
DECLARE v_address varchar(100);
DECLARE My_Cursor CURSOR FOR
select teacherid,teachername,status,email,contact,address
from teacher;
OPEN My_Cursor;
FETCH My_Cursor INTO v_teacherid,v_teachername,v_status,v_email,v_contact,v_address;
CLOSE My_Cursor;
END$$
DELIMITER ;
我不确定这是对还是错,因为当我执行程序时它没有给我任何输出。
MySQL 中没有 Oracle 数据库 REF CURSOR 的直接等价物。
最简单的解决方案可能是这样的:
DELIMITER $$
CREATE PROCEDURE teacherlist()
BEGIN
select teacherid,teachername,status,email,contact,address
from teacher;
END$$
DELIMITER ;
并使用call
语句来使用结果集。
我在 oracle
中做了这些 SQL 语句create or replace procedure teacherlist(lists out SYS_REFCURSOR )
is
begin
open lists for
select teacherid,teachername,status,email,contact,address
from teacher;
end;
但现在我必须在 MySQL 中为 PHPMyAdmin 执行相同的存储过程,我是这样做的:
DELIMITER $$
CREATE PROCEDURE `teacherlist`(OUT `v_stuid` VARCHAR(10), OUT `v_teachername` VARCHAR(100), OUT `v_status` VARCHAR(20), OUT `v_email` VARCHAR(40), OUT `v_contact` VARCHAR(20), OUT `v_address` VARCHAR(100))
begin
DECLARE v_teacherid varchar(10);
DECLARE v_teachername varchar(100);
DECLARE v_status varchar(20);
DECLARE v_email varchar(40);
DECLARE v_contact varchar(20);
DECLARE v_address varchar(100);
DECLARE My_Cursor CURSOR FOR
select teacherid,teachername,status,email,contact,address
from teacher;
OPEN My_Cursor;
FETCH My_Cursor INTO v_teacherid,v_teachername,v_status,v_email,v_contact,v_address;
CLOSE My_Cursor;
END$$
DELIMITER ;
我不确定这是对还是错,因为当我执行程序时它没有给我任何输出。
MySQL 中没有 Oracle 数据库 REF CURSOR 的直接等价物。
最简单的解决方案可能是这样的:
DELIMITER $$
CREATE PROCEDURE teacherlist()
BEGIN
select teacherid,teachername,status,email,contact,address
from teacher;
END$$
DELIMITER ;
并使用call
语句来使用结果集。