MySql过程不返回值

时间:2013-09-09 14:42:47

标签: mysql procedures

我无法在此代码中获得OUT变量的结果,我做错了什么?有人可以帮忙吗?

BEGIN 
    DECLARE done INT DEFAULT FALSE;
    DECLARE cid INT(10);    
    DECLARE cuserid VARCHAR(50);
    DECLARE cur1 CURSOR FOR SELECT id,username FROM tblcustomer;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 
    OPEN cur1;
    read_loop: LOOP
        FETCH cur1 INTO cid,cuserid;   
            IF done THEN
                LEAVE read_loop;
            END IF;   
            SET customers_list = CONCAT(customers_list,cid,':',cuserid,',');
    END LOOP;
    CLOSE cur1;
END

1 个答案:

答案 0 :(得分:1)

您的代码段中缺少过程原型,但假设如下:

CREATE PROCEDURE foo(OUT customers_list VARCHAR(100))
BEGIN
    ...
    SET customers_list = 'foo-list';
END ;

这是你如何检索你的“回报价值”:

CALL foo(@var);
SELECT @var; -- outputs "foo-list"

严格地说,程序没有“返回值”。 功能具有:

CREATE FUNCTION bar() RETURNS VARCHAR(100)
BEGIN
    ...
    RETURN 'bar-list';
END ;

SELECT bar(); -- outputs "bar-list";