мы можем создать функцию определения пользователя в хранимой процедуре, а затем в конце процедуры хранения нам нужно удалить эту пользовательскую функцию определения пользователя.Пользователь определяет функцию с помощью хранимой процедуры
ответ
Вы можете, но это может стать беспорядочным.
Посмотрите на sp_executesql. Это позволит вам запускать произвольный SQL, включая DDL. Создание и использование UDF таким образом кажется немного опасным - вам нужно убедиться, что конфликты имен не конфликтуют с конкурирующими потоками, и нет никакого способа получить оптимизацию запросов.
Я бы дважды проверял ваш дизайн, чтобы убедиться, что нет другого решения!
Динамический SQL - единственный способ.
ALTER PROC ...
AS
...
EXEC ('CREATE FUNCTION tempFunc...')
...
EXEC ('DROP FUNCTION tempFunc')
...
GO
Однако:
- , если у вас есть 2 одновременных казни он потерпит неудачу, потому что tempFunc уже существует
- если каждое UDF определение отличается, то вам нужно случайные имена
- если вы рандомизации имя, остальная часть кода должна быть динамической SQL тоже
- сохраненный proc подразумевает повторное использование, поэтому просто сохраняйте его
- код потребуется ddl_admin или db_owner права на создание ОДС
- ...
Итак ... почему вы хотите это сделать?
Я хочу создать пользовательский процесс как раз как раздельные слова для ввода параметров на уровень хранимой процедуры, я использовал эту настраиваемую функцию только для этого процесса. После этого процесса я не хочу эта функция присутствует на уровне сервера sql. Давайте рассмотрим, хотите ли пользователь создать пользовательский процесс, который он создал пользовательскую функцию. после завершения этого процесса ему необходимо удалить это. Аналогично создается 1000 настраиваемых функций, если они не удаляют эту функцию, нам нужно больше места для уровня базы данных. – Rajagopalk
- 1. Обновление с помощью хранимой процедуры
- 2. Результат возврата хранимой процедуры в функцию
- 3. Предотвращение модификации данных с помощью хранимой процедуры
- 4. хранимой процедуры
- 5. вызовов Oracle хранимой процедуры с помощью createNativeQuery
- 6. Выполнение хранимой процедуры с помощью «IN» пункт
- 7. Вставить в БД с помощью хранимой процедуры
- 8. Как вызвать функцию из хранимой процедуры SQL
- 9. Время хранимой процедуры хранимой процедуры MySQL при вызове с C#
- 10. Проблема вызова хранимой процедуры из другой хранимой процедуры с помощью классического ASP
- 11. Создание отчета Кристал с помощью хранимой процедуры
- 12. Загрузить выдержку пользователя с помощью хранимой процедуры
- 13. Отладка хранимой процедуры Oracle с помощью Toad
- 14. Invoke PostgreSQL хранимой процедуры с помощью C
- 15. Создание хранимой процедуры с помощью C#
- 16. Выполнение хранимой процедуры с помощью PetaPoco
- 17. Crystal Reports с помощью хранимой процедуры
- 18. Вставка новой записи с помощью хранимой процедуры
- 19. Вызов хранимой процедуры с помощью C#
- 20. Вызов SQL хранимой процедуры с помощью щеголеватый
- 21. Calling параметризованных хранимой процедуры с помощью NHibernate
- 22. Обновление GridView с помощью хранимой процедуры
- 23. Вставка строки с помощью хранимой процедуры (Informix)
- 24. заселить @ html.listboxfor с помощью хранимой процедуры
- 25. Вставка Varbinary (макс.) С помощью хранимой процедуры
- 26. Вызов хранимой процедуры с помощью Shell Script
- 27. Удаление временных таблиц с помощью хранимой процедуры
- 28. Запуск хранимой процедуры с помощью Task.Factory.StartNew
- 29. Вставить INSERT только с помощью хранимой процедуры
- 30. Заполнение GridView с помощью результатов хранимой процедуры
Это похоже на дубликат: [Создание функции, определяемой пользователем в хранимой процедуре в SQL 2005] (http://stackoverflow.com/questions/2505408/creating-a-user-defined-function-in-stored-function-in-stored- procedure-in-sql-2005/2505459 # 2505459) – Thomas