В приложении, над которым я работаю над портированием в Интернет, в настоящее время мы динамически обращаемся к различным таблицам во время выполнения от запуска к запуску на основе указанной строки «template». Я хотел бы перенести бремя выполнения этого назад на базу данных сейчас, когда мы переходим на SQL-сервер, поэтому мне не нужно связываться с динамическим GridView. Я подумал о написании табличной UDF с параметром для имени таблицы и параметром запроса WHERE.
Я ввел следующее для своей UDF, но, очевидно, это не работает. Есть ли способ взять varchar или какую-нибудь строку и получить ссылку на таблицу, которая может работать в предложении FROM?
CREATE FUNCTION TemplateSelector
(
@template varchar(40),
@code varchar(80)
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM @template WHERE ProductionCode = @code
)
Или каким-то другим способом получения набора результатов, схожего по концепции с этим. В основном все записи в таблице обозначены varchar @template с соответствующим ProductionCode @ code.
Я получаю сообщение об ошибке "Необходимо объявить табличную переменную" @template "", поэтому сервер SQL, вероятно, пытается выбрать из табличной переменной то, что я пытаюсь выбрать.
При редактировании: Да, мне не нужно делать это в функции, я могу запускать сохраненные процессы, я просто не писал ни одного из них раньше.