MySQL存储过程 - 输出值的问题

时间:2010-11-17 12:37:23

标签: sql mysql stored-procedures

DROP PROCEDURE `uuu`//

CREATE DEFINER=`auth_tracker`@`%` PROCEDURE `uuu`()
BEGIN

DECLARE a,b CHAR(50);
DECLARE _output TEXT DEFAULT '';

DECLARE cur1 CURSOR FOR SELECT attribute_name, value
   FROM user_product_attribute upa, product_attribute pa
  WHERE upa.user_product_id IN

    (  SELECT upa.user_product_id
         FROM user_product_attribute upa, user_product up, product_attribute pa, product p
        WHERE pa.attribute_name = 'username'
          AND pa.product_attribute_id = upa.product_attribute_id
          AND pa.product_id = p.product_id
          AND up.status = 'active'
          AND p.product_name = 'broadband'
          AND upa.value = 'lsolway-dsl' )

    AND upa.product_attribute_id = pa.product_attribute_id;

OPEN cur1;

read_loop: LOOP
  FETCH cur1 INTO a, b;
  SET _output = CONCAT(_output,a,b);
END LOOP;

SELECT _output;

END//

大家好,我正在尝试让SP设置以下输出..我无法看到我出错的地方..没有什么被退回.. 查询本身可以很好地独立运行..

3 个答案:

答案 0 :(得分:0)

DECLARE一个OUT参数并将值填入输出中。

还有一个建议,它总是很好地使用@作为存储过程中的局部变量。例如@_output,@ a和@b。

答案 1 :(得分:0)

就我所知,你没有定义任何output parameters。这将使从SQL存储过程中获取数据变得非常困难。

答案 2 :(得分:0)

子查询是原因..我只使用一个游标来进行需要两个的查询..我甚至不确定SP中的子查询是否可行..