MS-SQL-08: возможно ли создать представление, зависящее от функции, до ее создания? - PullRequest
1 голос
/ 14 июля 2010

Использование MS-SQL-08:

Можно ли как-то временно отключить проверку зависимостей, чтобы я мог создать представление, использующее функцию, которая не существует (еще не была создана) навремя создания вида.[затем создайте требуемую функцию и, наконец, снова включите проверку зависимостей]

Итак, допустим, у меня есть представление V, использующее функцию F, порядок, которого я хотел бы достичь, равен

отключить проверки зависимостей 1. создать V 2. создать F повернуть проверки зависимостей обратно на

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

Это называется deferred name resolution, и хотя вы можете создать процесс, который выбирает из таблицы, если таблица не существует, вы не можете сделать это с представлением, которое использует функцию

пример прока

create procedure prTest
as select * from MyTestTable
go

create table MyTestTable(id int)
go

exec prTest
1 голос
/ 16 июля 2010

Я не думаю, что это возможно, поскольку SQL Server необходимо оценить представление о создании, чтобы определить типы столбцов.

Просто создайте фиктивную функцию или, если вы знаете, что будет функция, которая возвращает определенный тип, замените ее на что-то вроде SELECT CAST(NULL AS tinyiny) as MyFuncPlaceholder

0 голосов
/ 14 июля 2010

Возможный обходной путь - создать фиктивную (или замещающую) функцию, создать представление, используя ее без привязки схемы, а затем заменить функцию на нужную.

Это может не сработать - я смутно припоминаю ситуацию, когда мы изменяли таблицу в представлении, а затем представление не работало до тех пор, пока оно не было «сброшено» (что может быть так же просто, как выполнить инструкцию ALTER VIEW с точнымтакое же определение).Проведите много тестов и будьте готовы написать неловкий код.

...