Тип параметра процедуры хранения MSSQL с использованием столбца таблицы БД

Знаете ли вы, как автоматически получить тип параметра из типа столбца таблицы базы данных?

Например,

CREATE PROCEDURE UspS_GetProjectUser
    @UserName GETTYPE(Projects.username)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 1 * FROM Projects (NOLOCK)
    WHERE Projects.expirationDate > GETDATE()
    AND Projects.username = @UserName
END

GETTYPE (Projects.username) <<< Я хочу получить тип столбца таблицы базы данных?

Спасибо..

1 ответ

Решение

Это невозможно из-за уловки-22. Процедура должна быть скомпилирована и выполнена для вызова функции GETTYPE, но процедура не может быть скомпилирована из-за неизвестного типа данных параметра. Для этого требуется функциональность, которой нет в SQL Server.

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

Другие вопросы по тегам