从MySQL函数返回一个值

时间:2012-10-17 23:27:16

标签: mysql sql function

我写了一个小函数:

CREATE TABLE states
    (`id` int, `name` varchar(2))
;

INSERT INTO states
    (`id`, `name`)
VALUES
    (1, 'md'),
    (2, 'tx'),
    (3, 'ma')
;

delimiter //

create function states_repeated (s varchar(2))
returns int
begin
  insert into sid select count(*) from states where states.name=s ;
  return sid ;
end//

delimiter ;

select states_repated('ma') ;

但是这会返回

ERROR 1146 (42S02): Table 'test.sid' doesn't exist

如何返回此值?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情,

DECLARE _returnValue INT;
SET _returnValue = (select count(*) from states where states.state = s);
return _returnValue;

完整代码

delimiter //

create function states_repeated (s varchar(2))
returns int
begin
    DECLARE _returnValue INT;
    SET _returnValue = (select count(*) from states where states.name = s);
    return _returnValue;
end//

delimiter ;

答案 1 :(得分:0)

我认为mysql函数和存储过程只返回声明的变量