1

次のストアド プロシージャを作成しています。

DELIMITER $$
DROP PROCEDURE IF EXISTS update_alert_system$$
CREATE PROCEDURE update_alert_system()
BEGIN

DECLARE done INT;
DECLARE link_id_var INT;
DECLARE curl CURSOR FOR  SELECT link_id FROM alert_system;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

OPEN curl;
my_loop:LOOP 
FETCH curl INTO link_id_var;

call ignore_check(link_id_var);
call snooze_check(link_id_var);

IF done=1 THEN
LEAVE my_loop;
END IF;

END LOOP my_loop

END$$
DELIMITER ;

問題は、データをフェッチし、2 つの関数にパラメーターとして put を配置する方法にあります。

  call ignore_check(link_id_var);
call snooze_check(link_id_var);

どちらの関数も数値を返すはずです。そのような機能の例。

DELIMITER $$
DROP FUNCTION IF EXISTS snooze_check $$
CREATE FUNCTION snooze_check(link_id_in INT)
RETURNS INT READS SQL DATA
RETURN (SELECT count(*) as SUCCESSES FROM link_results WHERE link_id=link_id_in AND 

Length(anchor_match)>1);
DELIMITER ;

問題は、スヌーズ チェック関数から値を返し、それをストアド プロシージャの変数に設定する方法です。

4

1 に答える 1

0
DECLARE Result_ignore_check INT;
SET Result_ignore_check=ignore_check(link_id_var);
于 2012-09-20T08:35:48.977 に答える