1

我写了一个小函数:

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

我如何返回这个值?

4

2 回答 2

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 ;
于 2012-10-17T23:29:28.920 回答
0

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

于 2012-10-17T23:30:48.950 回答