Поскольку я работаю с MYSQL неделю, получил возможность выполнять хранимую процедуру, а также представления, но столкнулся с некоторой проблемой при получении значений, возвращаемых из функции.Вот функция:
CREATE DEFINER=`root`@`localhost` FUNCTION `GetProductIdsStringByEnquiryId`
(
InEnquiryId int
) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE InProductIds varchar(4000);
DECLARE ProductId varchar(50);
DECLARE x,y,z INT;
DECLARE sp1_cursor CURSOR FOR SELECT ProductId FROM enquiryproductid where
EnquiryId=InEnquiryId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET z = 1;
SET InProductIds='';
OPEN sp1_cursor;
REPEAT
FETCH sp1_cursor INTO ProductId;
SETInProductIds=concat(InProductIds,ProductId,',');
UNTIL (z=1)
END REPEAT;
CLOSE sp1_cursor;
RETURN InProductIds ;
END
Я изначально работал с SQL SERVER 2005, и функцию, которую я написал в них, я пытался преобразовать, как описано выше в MYSQL. Вот код функции SQL:
CREATE function [dbo].[GetBranchIdsStringByEmployeeId]
(
@EmployeeId as integer
)
returns nvarchar(4000)
as
begin
declare @BranchIds as nvarchar(4000)
set @BranchIds=''
if exists(select 1 from dbo.BranchEmployees where EmployeeId=@EmployeeId)
begin
select @BranchIds=@BranchIds+cast(BranchId as nvarchar(50))
+',' from dbo.BranchEmployees where EmployeeId=@EmployeeId
order by BranchId
end
return @BranchIds
end
Может кто-нибудь, пожалуйста, дайте мне знать, если функция, что я написал в MYSQL, в ProperManner или нет?Пожалуйста, помогите мне.Спасибо.