下面是一个函数,它将输入字符串填充到输入字符串指定一侧的所需长度。当由SSIS执行时,元数据不返回所需的长度。我需要它将适当的数据长度返回给SSIS。
CREATE FUNCTION [dbo].[udf_FillField]
(
@StringOrg nvarchar(max), --Original string
@LengthOfStringOutPut int, --Length of output sting
@FillChr nvarchar(1), --Char to pad the original string
@LRJustified nvarchar(1) --Left or right justified
)
RETURNS nvarchar(max)
AS
BEGIN
-- Declare Variable(s)
DECLARE @Result nvarchar(max)
-- Left Justified
IF @LRJustified = 'L'
BEGIN
SET @Result =
LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut) +
REPLICATE(@FillChr, (@LengthOfStringOutPut - LEN(LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut))))
END
-- Right Justified
IF @LRJustified = 'R'
BEGIN
SET @Result =
REPLICATE(@FillChr, (@LengthOfStringOutPut - LEN(LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut)))) +
LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut)
END
-- Incorrect Parameter Input
IF @LRJustified <> 'R' AND @LRJustified <> 'L'
BEGIN
SET @Result =
NULL
END
-- Output Data
RETURN @Result
END
答案 0 :(得分:1)
您的UDF定义为返回.element{
-webskit-transition: max-height 1s;
max-height:0px;
}
.parentelement:hover childelement {
max-height:50px;
}
。 SSIS将查看函数的元数据,请参阅它指定它返回nvarchar(max)
或DT_NTEXT,因为SSIS将对其进行分类,并且已完成验证。
您将能够使用您的函数的唯一方法是将结果显式地转换为适当的大小。
nvarchar(max)
作为旁注,UDF感觉像代码重用,这就是我们作为开发人员所教授的内容。但是在SQL Server中,它们是令人厌恶的,因为优化器无法为函数需要多少工作产生准确的成本,因此它猜测,100次中100次,这可能是错误的。您将获得所封装的任何业务逻辑的一致实现,但基于所需的数据量和逻辑,性能损失可能会很严重。