0

您知道如何从数据库表列的类型自动获取参数类型吗?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)< < <我想要得到的数据库表列的类型的类型?

谢谢..

回答

0

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

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

+0

嗨丹,我知道我们可以在PL/SQL中做到这一点,但我正在研究在MS SQL中有什么办法可以做到这一点。我写了GETTYPE作为示例函数。有没有什么功能可以做到这一点? –

+1

@SaygınKarahan,是的,我明白GETTYPE只是一个例子。此功能目前不存在于T-SQL中。 PL/SQL和T-SQL是不同的野兽。考虑在Connect上提交增强请求(https://connect.microsoft.com/SQLServer/)。 –

相关问题