显示mysql存储过程中的记录

显示mysql存储过程中的记录,mysql,stored-procedures,Mysql,Stored Procedures,我刚刚开始学习如何在MYSQL中编写存储过程,我遇到了一个障碍 我编写了以下代码: DELIMITER $$ DROP PROCEDURE IF EXISTS `emscribedx`.`countcodes` $$ CREATE PROCEDURE `emscribedx`.`countcodes` () BEGIN declare doneprocessing int default 0; declare thisaccount varchar(50); declare countcurso

我刚刚开始学习如何在MYSQL中编写存储过程,我遇到了一个障碍

我编写了以下代码:

DELIMITER $$
DROP PROCEDURE IF EXISTS `emscribedx`.`countcodes` $$
CREATE PROCEDURE `emscribedx`.`countcodes` ()
BEGIN
declare doneprocessing int default 0;
declare thisaccount varchar(50);
declare countcursor cursor for select acct from patientid where patienttype='P';
declare continue handler for not found
set doneprocessing = 1;
Fetch countcursor into thisaccount;
Repeat
select * from doc_table where acct = thisaccount;
until doneprocessing = 1
END repeat;
close countcursor;
END $$

DELIMITER ;
我想显示在repeat语句之后出现的select语句的结果。但是我该怎么做呢?当我执行存储过程时,什么都没有发生

谢谢,


Elliott

该过程只能返回单个查询的结果,为什么不使用它呢

SELECT doc_table.* 
FROM doc_table 
INNER JOIN patientid
ON patientid.acct = doc_tableacct
WHERE patientid.patienttype='P';

如果您愿意,可以将其放入程序中。

这只是一个玩具程序。我用这个做实验只是为了让我的脚被这些东西弄湿。我想知道如何返回这些结果。如果您的过程包含一个
SELECT
语句,则调用它时将返回查询结果。如果它包含多个
SELECT
,它将返回第一个(如果我没弄错的话)。@bfavaretto:这不完全正确。MySQL将返回存储过程中执行的每个语句的结果,但客户端可能不支持读取这样多个结果集:例如,使用PDO时,会调用在它们之间移动。@eggyal,感谢您提供的信息,我认为这在MySQL中是一个严重的问题。在命令行客户机中,它可以工作。在Workbench中,它没有。你知道它是否能从PHP和PDO驱动程序一起工作吗?@eggyal,oops,我真的很累了,我想是时候关机了!谢谢