MySQL中的计算

时间:2017-03-22 17:01:16

标签: mysql stored-procedures

我想在存储过程中获得计算结果,该存储过程仅允许一个参数("代码")。

delimiter $$
create procedure Test(in code varchar(8)) language sql deterministic
begin
set @sql=concat("select (a+b+c) as N, (d+e+f) as D from Tbl where code='",code,"'");
set r=N/D;
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
set @age=@NUM/@DEN;
end$$

我想得到N,D和r。

1 个答案:

答案 0 :(得分:2)

在我看来,您可以使用视图而不是存储过程更轻松地解决问题。例如,您可以定义视图

CREATE VIEW testview AS
SELECT *,N/D r FROM (select code, a+b+c N, d+e+f D FROM tmp) sub;

当您在SELECT中使用它时,您可以轻松过滤您感兴趣的code,例如

SELECT * from testview WHERE code='yourcode'

然后你会得到像

这样的结果
code      N    D   r
yourcode  468  234 2

视图当然可以与其他更复杂的查询或子查询结合使用。

修改
正如Paul所暗示的那样,如果不使用子查询来编写视图会更有效:

CREATE VIEW testview AS
SELECT code, a+b+c N, d+e+f D, (a+b+c)/(d+e+f) r  FROM tmp;