我想在存储过程中获得计算结果,该存储过程仅允许一个参数("代码")。
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。
答案 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;