Я думаю о создании хранимых процедур на лету.
то есть работает CREATE PROCEDURE ... когда запущено (веб) приложение.
Какие риски или проблемы это может вызвать?
- Я знаю, что учетная запись базы данных должна иметь дополнительные привилегии.
- Это не происходит каждый день. Только время от времени.
- Я использую sql server и также заинтересован в mysql и postgres.
Update1:
Благодаря комментариям я подумываю о создании новой версии хранимой процедуры и переключении вместо ALTERing sp. пример: sp1 -> sp2 -> sp3
Обновление2:
Причина:
Моя схема изменяется из-за пользовательских полей (неизвестное количество и тип столбцов)
Сначала я попробовал динамический sql и sp_executesql. Конечно, это работает. Динамический sql работает лучше для 1,2,3 простого обновления, вставки.
Но это стало слишком уродливо и много работы, и оно плохо сочетается с хранимой процедурой, проблемы с параметризацией sql, потому что она используется внутри хранимой процедуры, а количество и тип параметров неизвестны во время компиляции (долго история).
По крайней мере, основной сценарий для этого решения не так уж сложен.
Логика sp не меняется. Для каждого настраиваемого поля я должен добавить новый параметр в sp и добавить столбец для обновления, вставки и т. Д.
Я также подумал о том, чтобы сделать параметры хранимой процедуры динамическими, например, sp_executesql, который принимает любое число и тип параметров, но не может найти способ.