使用DB表列的MSSQL存储过程参数类型

时间:2015-04-08 10:32:21

标签: sql-server stored-procedures types parameters parameter-passing

您是否知道如何自动从数据库表列的类型中获取参数类型?

例如,

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 个答案:

答案 0 :(得分:0)

由于捕获22,这是不可能的。需要编译和执行proc以调用GETTYPE函数,但由于未知参数数据类型,无法编译proc。这需要当前不在SQL Server中的功能。

我假设你想要这个功能,不是在运行时动态确定数据类型,而是为了避免手动匹配列数据类型的开发工作(即创建时的静态类型)。这有点值得注意,但请注意调用者还应指定正确的数据类型,以避免由于隐式数据类型转换而导致的意外行为。