2016-10-25 6 views
1

を印刷することができません:関数の実行。私は最近、stackoverflowの中で次の関数に出くわした出力

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の全く新しいものです。誰かが私がどこに間違っているのか、デコードされたURLを印刷する方法を教えてもらえますか?

+0

内に正しくコードをフォーマットしてください。各行を4つのスペースでインデントするか、コードを強調表示してCtrl + Kを押すことで行えます。 – Carcigenicate

+0

コードは明らかにSQL Serverであり、PL/SQLタグを削除しました。実際にOracleを使用している場合は、別の機能を使用する必要があります。 –

答えて

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

戻り

https://in.mathworks.com 

またはSELECT

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

ありがとう!これは正しい方法で動作します。 – Dilip

関連する問題