Я работаю над приложением, которое использует таблицы SQL Server. Я пишу запрос, в котором мне нужно проверить таблицу, и если таблица существует, мне нужно выбрать записи из этой таблицы и, если таблица не существует в этой базе данных, мне нужно выбрать из другой таблицы.
Я пытался написать то же самое с UDF, но у меня ничего не получилось. Я не могу использовать хранимую процедуру, так как мне нужно получить выходные данные для соединения с другой таблицей.
Есть ли способ сделать это?
CREATE FUNCTION dbo.udf_school_information
(@univ_id INT)
RETURNS @returntable TABLE
(
univ_id INT,
school_number INT,
school_name NVARCHAR(255),
school_address NVARCHAR(255),
state NVARCHAR(150),
district NVARCHAR(100),
start_date datetime
)
AS
BEGIN
DECLARE @tbl_exists BIT;
SET @tbl_exists = ISNULL((SELECT 1 FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE '%School'),0)
IF @tbl_exists = 1
BEGIN
SELECT
university_id, school_number, school_name,
school_address, school_state, district, school_started_date
FROM
[dbo].[tbl_school_info]
WHERE
id = @univ_id
END
ELSE
BEGIN
---- My condition if school_ingo table does not exists
---- will be querying another table.
END
RETURN;
END;
GO
Выше выдает ошибку
Сообщение 444, Уровень 16, Состояние 2, Процедура udf_site_information, Строка 24
[Batch Start Line 15] Выбор операторов, включенных в функцию
не может вернуть данные клиенту.