我需要一个简单的存储函数,用于进一步的SQL Server base64编码,但是对于我传递的每个字符串都返回null。我认为sql:parameter无法与输入函数参数一起使用,但不知道如何避免它。
这是我的代码:
这段代码片段能够正常运行,但是它声明了局部变量,而在函数中是不可能做到的。
这是我的代码:
ALTER FUNCTION [dbo].[usf_base64_encode]
(@value nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
RETURN cast('' as xml).value('xs:base64Binary(sql:variable("@value"))', 'varchar(max)')
END
这段代码片段能够正常运行,但是它声明了局部变量,而在函数中是不可能做到的。
declare @source varbinary(max), @encoded varchar(max), @decoded varbinary(max)
set @source = convert(varbinary(max), 'Hello Base64')
set @encoded = cast('' as xml).value('xs:base64Binary(sql:variable("@source"))', 'varchar(max)')
set @decoded = cast('' as xml).value('xs:base64Binary(sql:variable("@encoded"))', 'varbinary(max)')
select
convert(varchar(max), @source) as source_varchar,
@source as source_binary,
@encoded as encoded,
@decoded as decoded_binary,
convert(varchar(max), @decoded) as decoded_varchar