在MySQL中查询中选择存储过程值

时间:2011-01-07 16:23:53

标签: mysql sql stored-procedures

我发现有很多线程接近这个,但我没有回答我的问题。

我正在撰写一份报告,需要使用我声明为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”放在我的查询结果中而不是它的值。

有没有办法强制它在那里输出值?

3 个答案:

答案 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块中定义它们。

也可能对您有所帮助,具体取决于您要做的事情: