使用 DB Table 列的 MSSQL 存储过程参数类型
MSSQL Store Procedure Parameter Type With Using DB Table Column
你知道如何自动从数据库table列的类型中获取参数类型吗?
例如,
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) <<< I want to get the type of database table column's type ?
谢谢..
由于第 22 条军规,这是不可能的。调用GETTYPE函数需要编译执行proc,但由于参数数据类型未知,无法编译proc。这需要 SQL 服务器中当前没有的功能。
我假设您需要此功能,而不是在 运行 时动态确定数据类型,而是避免手动匹配列数据类型的开发工作(即创建时的静态类型)。这样做有好处,但请注意,调用者还应指定正确的数据类型,以避免由于隐式数据类型转换而导致意外行为。
你知道如何自动从数据库table列的类型中获取参数类型吗?
例如,
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) <<< I want to get the type of database table column's type ?
谢谢..
由于第 22 条军规,这是不可能的。调用GETTYPE函数需要编译执行proc,但由于参数数据类型未知,无法编译proc。这需要 SQL 服务器中当前没有的功能。
我假设您需要此功能,而不是在 运行 时动态确定数据类型,而是避免手动匹配列数据类型的开发工作(即创建时的静态类型)。这样做有好处,但请注意,调用者还应指定正确的数据类型,以避免由于隐式数据类型转换而导致意外行为。