【发布时间】:2017-10-27 23:43:46
【问题描述】:
我写了一个存储过程。我没有得到我正在寻找的数据,我想知道如何逐行查看输出。我在 PLSQL 方面的经验很丰富,所以我通常只会写一个网页并查看结果。有什么方法可以让我使用下面的存储过程并使用 php 将其打印到 html 或使用 PHPMyAdmin 来查看错误在哪里。我确信这是我在程序中遗漏的简单事情,但 3 小时后我不知道。我正在盲目尝试自学 PHP 和 MySQL。
BEGIN
DECLARE v_szAwayTeam varchar(5);
DECLARE v_szHomeTeam varchar(5);
DECLARE v_nPointsAway INTEGER DEFAULT 0;
DECLARE v_nPointsHome INTEGER DEFAULT 0;
DECLARE v_nPointsFor INTEGER DEFAULT 0;
DECLARE v_nPointsAgainst INTEGER DEFAULT 0;
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE curSchedule CURSOR
FOR
SELECT szAway, szHome, nPointsAway, nPointsHome FROM schedule_master WHERE
szGame = 'R' ORDER BY dtGame, dtTime;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1;
OPEN curSchedule;
get_Sched: LOOP
FETCH curSchedule INTO v_szAwayTeam, v_szHomeTeam, v_nPointsAway,
v_nPointsHome;
IF (v_nPointsAway < v_nPointsHome) THEN
SELECT nPointsFor INTO v_nPointsFor FROM standings_master WHERE
idTeam = v_szHomeTeam;
SET v_nPointsFor = (v_nPointsHome + v_nPointsFor);
UPDATE standings_master SET nPointsFor = v_nPointsFor WHERE
idTeam = v_szHomeTeam;
SELECT nPointsAgainst INTO v_nPointsAgainst FROM
standings_master WHERE idTeam = v_szAwayTeam;
SET v_nPointsAgainst = (v_nPointsAway + v_nPointsAgainst);
UPDATE standings_master SET nPointsAgainst = v_nPointsAgainst
WHERE idTeam = v_szAwayTeam;
COMMIT;
ELSEIF (v_nPointsHome < v_nPointsAway) THEN
SELECT nPointsFor INTO v_nPointsFor FROM standings_master WHERE
idTeam = v_szAwayTeam;
SET v_nPointsFor = (v_nPointsAway + v_nPointsFor);
UPDATE standings_master SET nPointsFor = v_nPointsFor WHERE
idTeam = v_szAwayTeam;
SELECT nPointsAgainst INTO v_nPointsAgainst FROM
standings_master WHERE idTeam = v_szHomeTeam;
SET v_nPointsAgainst = (v_nPointsHome + v_nPointsAgainst);
UPDATE standings_master SET nPointsAgainst = v_nPointsAgainst
WHERE idTeam = v_szHomeTeam;
COMMIT;
END IF;
IF v_finished = 1 THEN
LEAVE get_Sched;
END IF;
END LOOP get_Sched;
CLOSE curSchedule;
END
【问题讨论】:
-
我认为你可以声明临时表,将数据插入其中,最后在你的过程结束时返回临时表作为结果
标签: php mysql stored-procedures cursor