Процедура или функция для возврата таблицы MYSQL - PullRequest
0 голосов
/ 05 июля 2018

У меня есть эта функция ниже, которая вызывается из хранимой процедуры для разделения строки через запятую и возврата в виде таблицы. это DB2. Я пытаюсь реализовать то же самое в MYSQL. но MYSQL не может вернуть таблицу. Мне нужно написать хранимую процедуру для возврата таблицы. вызывающий ИП. Ниже приведен код. Пожалуйста, помогите мне преобразовать в SP, который возвращает таблицу вызывающему SP.

Вызов СП: DELETE FROM RAO_FINANCIAL_DETAILS_TRACTN WHERE FINANCIAL_DETAIL_ID IN ( SELECT FINANCIAL_DETAIL_ID FROM RAO_FINANCIAL_DETAILS WHERE CUSTOMER_ID IN ( SELECT STRING_VALUE FROM TABLE(FN_RAO_SPLIT(@inputParam,',')) AS TEST ) ) ;

вызванная функция:

`

CREATE FUNCTION FN_RAO_SPLIT
(
   STRINGTOSPLIT VARCHAR(2000), DELIMITER VARCHAR(10)
)
RETURNS TABLE
(
   ROW_NUMBER INTEGER, STRING_VALUE VARCHAR(250), STRING_POSITION INTEGER
)
NO EXTERNAL ACTION
BEGIN ATOMIC
        RETURN WITH RECORDS
(
   ROW_NUMBER, STRING_VALUE, STRING_POSITION
)
AS
(
   VALUES
   (
      1,
      VARCHAR(SUBSTR(STRINGTOSPLIT, 1,DECODE(INSTR(STRINGTOSPLIT, DELIMITER, 1), 0, LENGTH(STRINGTOSPLIT),INSTR(STRINGTOSPLIT, DELIMITER, 1) - 1)),255)
                ,
      INSTR(STRINGTOSPLIT, DELIMITER, 1) + LENGTH(DELIMITER)
   )
   UNION
   ALL
   SELECT
   ROW_NUMBER + 1,
   VARCHAR(SUBSTR(STRINGTOSPLIT, STRING_POSITION,
                                 DECODE(INSTR(STRINGTOSPLIT, DELIMITER, STRING_POSITION),
                                 0,
                                                                LENGTH(STRINGTOSPLIT) - STRING_POSITION + 1,
                                                                INSTR(STRINGTOSPLIT, DELIMITER, STRING_POSITION) - STRING_POSITION)),
                                                                255),
   INSTR(STRINGTOSPLIT, DELIMITER, STRING_POSITION) + LENGTH(DELIMITER)
  FROM RECORDS
   WHERE ROW_NUMBER < 30000
   AND STRING_POSITION > LENGTH(DELIMITER)
)
SELECT
ROW_NUMBER, STRING_VALUE, STRING_POSITION
FROM RECORDS
;--

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