我发现有很多线程接近这个,但我没有回答我的问题。
我正在撰写一份报告,需要使用我声明为SELECT字段之一的变量。
这是商店程序代码: DROP PROCEDURE IF EXISTS sp_Test
CREATE PROCEDURE `sp_Test`(facilityId INT, startDate DATE, endDate DATE)
BEGIN
DECLARE facilityName VARCHAR(256);
SELECT facility_name INTO facilityName FROM `reporting`.`facilities` WHERE `reporting`.`facilities`.facility_id = facilityId;
SELECT `reporting`.`error_stratification`.description AS Stratification, facilityName
...Rest of query that is not important
END
唯一的问题是它将字符串“facilityName”放在我的查询结果中而不是它的值。
有没有办法强制它在那里输出值?
答案 0 :(得分:1)
我清理了你的代码 - 以下应该提供一个很好的起点,你可以继续......
drop procedure if exists sp_test;
delimiter #
create procedure sp_test(
in p_facility_id int unsigned, -- p prefix = parameter
in p_start_date date,
in p_end_date date
)
begin
declare v_facility_name varchar(255) default null; -- v prefix = variable
select f.facility_name into v_facility_name from facilities f where
f.facility_id = p_facility_id limit 1;
select f.*, upper(v_facility_name) as facility_name from facilities f;
end#
delimiter ;
call sp_test (1, curdate() - interval 1 month, curdate());
答案 1 :(得分:0)
我认为您需要了解MySQL存储过程的基础知识。
http://www.brainbell.com/tutorials/MySQL/Using_Stored_Procedures.htm这会帮助你。
答案 2 :(得分:0)
您实际上并未在存储过程中定义变量。您可以在BEGIN / END块中定义它们。
也可能对您有所帮助,具体取决于您要做的事情: