Member 12966735 Ответов: 1

Альтернативное решение для возвращающая табличное значение функция SQL в СУБД MySQL


У меня есть функция, возвращающая табличное значение в SQL, который работает нормально, теперь я хочу такую же функцию для использования в MySQL, но я не в состоянии создать эту функцию в MySQL, так как нет функции, возвращающие табличные значения в MySQL я попытался с помощью хранимых процедур, но я хочу использовать этот выход в другом СП, на которые я не могу использовать Select * из магазина процедура
Пожалуйста, предложите некоторые изменения.
Вот моя функция sql, которую я хочу в MySQL

Что я уже пробовал:

ALTER FUNCTION [dbo].[TextSplit]  
(  
 @Text VARCHAR(max),   
 @Delimiter VARCHAR(1)  
)  
RETURNS @SplitData TABLE  
(      
 Position INT IDENTITY PRIMARY KEY,  
 Value VARCHAR(max)     
)  
AS  
BEGIN  
 DECLARE @index int   
-- SET @Text = REPLACE(@Text, ' ', '')   
 SET @index = -1   
   
 WHILE (LEN(@Text) > 0)   
  BEGIN    
   SET @index = CHARINDEX(@Delimiter , @Text)    
   IF (@index = 0) AND (LEN(@Text) > 0)    
    BEGIN     
     INSERT INTO @SplitData VALUES (@Text)  
     BREAK    
    END    
   IF (@index > 1)    
    BEGIN     
     INSERT INTO @SplitData VALUES (LEFT(@Text, @index - 1))     
     SET @Text = RIGHT(@Text, (LEN(@Text) - @index))    
    END    
   ELSE   
    SET @Text = RIGHT(@Text, (LEN(@Text) - @index))   
  END  
    
   RETURN  
END  


Если мы передадим эти значения
SELECT * FROM [dbo].[TextSplit]('2009-2010', '-')  

функция возвращает следующий вывод

Position	Value
      1	        2009
      2	        2010