执行一个功能。无法打印输出

时间:2016-10-25 21:33:13

标签: sql sql-server function sql-server-2008

我最近遇到了stackoverflow中的以下FUNCTION:

CREATE FUNCTION dbo.UrlDecode(@url varchar(3072))
RETURNS varchar(3072)
AS
BEGIN 
    DECLARE @count int, @c char(1), @cenc char(2), @i int, @urlReturn varchar(3072) 
    SET @count = Len(@url) 
    SET @i = 1 
    SET @urlReturn = '' 
    WHILE (@i <= @count) 
     BEGIN 
        SET @c = substring(@url, @i, 1) 
        IF @c LIKE '[!%]' ESCAPE '!' 
         BEGIN 
            SET @cenc = substring(@url, @i + 1, 2) 
            SET @c = CHAR(CASE WHEN SUBSTRING(@cenc, 1, 1) LIKE '[0-9]' 
                                THEN CAST(SUBSTRING(@cenc, 1, 1) as int) 
                                ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 1, 1)))-55 as int) 
                            END * 16 + 
                            CASE WHEN SUBSTRING(@cenc, 2, 1) LIKE '[0-9]' 
                                THEN CAST(SUBSTRING(@cenc, 2, 1) as int) 
                                ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 2, 1)))-55 as int) 
                            END) 
            SET @urlReturn = @urlReturn + @c 
            SET @i = @i + 2 
         END 
        ELSE 
         BEGIN 
            SET @urlReturn = @urlReturn + @c 
         END 
        SET @i = @i +1 
     END 
    RETURN @urlReturn
END
GO


I am trying to pass the following URL as an input to get the decoded URL as output using the following command:

DECLARE @urlReturn nvarchar(3072);  
EXEC dbo.UrlDecode2 @url = 'https%3a%2f%2fin.mathworks.com';  
PRINT @urlReturn;  
GO  

最初尝试以下方法:

exec dbo.UrlDecode2 @url = 'https%3a%2f%2fin.mathworks.com';
go

该函数解码了URL中的编码部分。我是PL / SQL的新手。有人能告诉我哪里出错了,以及如何打印解码后的网址。

1 个答案:

答案 0 :(得分:0)

Declare @URL varchar(500) 
Set @URL = dbo.UrlDecode2('https%3a%2f%2fin.mathworks.com')

返回

https://in.mathworks.com

或在选择

Select URL = dbo.UrlDecode2('https%3a%2f%2fin.mathworks.com')