Можно ли в хранимых процедурах создать временную функцию?

Ссылка скопирована
1 ответ

В хранимых процедурах можно создать временную таблицу и работать с ней. А можно ли создать временную функцию в хранимой процедуре?

Дополнительно:

В каком смысле временную?

  • Дмитрий, наподобие CREATE TEMPORARY TABLE, но только функции (https://dev.mysql.com/doc/refman/8.0/en/create-tem...) Чтобы можно было вызвать функцию только в скрипте процедуры и потом ее удалить
  • Дмитрий, что-то вот такое:
    CREATE DEFINER=`test`@`localhost` PROCEDURE `tests`() BEGIN  drop function if exists HelloWorld;  CREATE FUNCTION HelloWorld() RETURNS VARCHAR(20)     DETERMINISTIC BEGIN     DECLARE result varchar(30);        SET result = 'HELLO WORLD';    RETURN (result);  END  select HelloWorld();   END

    CREATE DEFINER=`test`@`localhost` PROCEDURE `tests`() BEGIN drop function if exists HelloWorld; CREATE FUNCTION HelloWorld() RETURNS VARCHAR(20) DETERMINISTIC BEGIN DECLARE result varchar(30); SET result = 'HELLO WORLD'; RETURN (result); END select HelloWorld(); END

  • Ну она будет не временная
  • А можно ли создать временную функцию в хранимой процедуре?

    А зачем? как-то больно на XY похоже...

  • CREATE FUNCTION не входит в список конструкций, разрешённых к использованию в stored objects (procedures, functions, triggers, event procedures) и prepared statements.

    Ответ: НЕЛЬЗЯ.

    PS. В MySQL нет временных функций, все функции - статические. Встроенные, регистрируемые либо хранимые.

    • классно, спасибо
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Кирилл JS Ответ

    Да, в хранимых процедурах можно создать временную функцию. В SQL Server временные функции можно использовать для выполнения определенных операций в рамках хранимой процедуры.

    Временные функции создаются с помощью ключевого слова CREATE FUNCTION, за которым следует имя функции и определение функции. Определение функции включает в себя список параметров, тип возвращаемого значения и тело функции, которое содержит операторы SQL для выполнения необходимых операций.

    Основное отличие временной функции от обычной функции заключается в том, что она существует только в пределах сеанса работы или в пределах блока кода, в котором она была создана. После завершения сеанса или выполнения блока кода временная функция автоматически удаляется из памяти.

    Использование временных функций в хранимых процедурах может быть полезно, если требуется выполнить набор операций, которые необходимо повторять несколько раз в рамках одной процедуры. Также временные функции могут быть удобны для упрощения структуры кода и повышения его читаемости.

    Однако, следует помнить, что использование временных функций может повлечь за собой некоторые недостатки, такие как увеличение сложности процедуры и уменьшение производительности из-за необходимости создания и удаления объектов в памяти. Поэтому перед использованием временных функций в хранимых процедурах следует тщательно взвесить их плюсы и минусы и выбрать наиболее подходящий подход к решению конкретной задачи.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно