Невозможно получить значение, возвращенное функцией mysql - PullRequest
1 голос
/ 16 декабря 2010

Поскольку я работаю с 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 или нет?Пожалуйста, помогите мне.Спасибо.

1 Ответ

0 голосов
/ 16 декабря 2010

Не полностью прочитано, но мало комментариев

Присвоение переменной в mysql использует :=set @variable можно использовать =, в select @variable:=@variable+1)

Вы пытаетесь

SELECT group_concat(BranchId)
FROM dbo.BranchEmployees
WHERE EmployeeId = @EmployeeId

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...