2014-01-30 41 views
-1

這裏是我寫將字符串轉換成ASCII值,但m到處以下錯誤的PL/SQL程序:以下程序中的錯誤是什麼?

ORA-06550: line 12, column 5: 
PLS-00113: END identifier 'FUNCTION' must match 'ENCODE12' at line 3, column 10 
ORA-06550: line 12, column 13: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: begin function package pragma procedure form 
  1. 聲明
  2. 拋光輪數(3):= 0;
  3. 功能Encode12(字符串VARCHAR2)

我新的PL/SQL編程。預先感謝。

declare 
buff number(3):=0; 
function Encode12(string varchar2) 
return varchar2 is 
encodedString varchar2(50):=''; 
Begin 
for i in 1 .. length(string) loop 
buff:=ascii(substr(string,i,1)); 
concat(encodedString,buff); 
end loop; 
return encodedString; 
end function; 
+0

你想創建一個函數嗎?或者你是否試圖創建一個聲明本地函數的匿名PL/SQL塊? –

+0

它的一個函數..用戶定義的函數計算值.. –

回答

1

嘗試:

create or replace function Encode12(string varchar2) 
return varchar2 is 
    encodedString varchar2(50):=''; 
    buff number(3):=0; 
Begin 
    for i in 1 .. length(string) loop 
    buff:=ascii(substr(string,i,1)); 
    -- concat(encodedString,buff); 
    encodedString := encodedString || buff; 
    end loop; 
    return encodedString; 
end; 
/

沒有concat過程中甲骨文,分配和連接操作必須改用:

encodedString := encodedString || buff; 

請看一看這個演示: http://sqlfiddle.com/#!4/21309/1

+0

thnxxx很多工作.. –

+1

Oracle有一個['concat'函數](http://docs.oracle.com/cd/B19306_01/server 0.102/b14200/functions026.htm)。 'concat'不會導致OP報告的編譯失敗。但是,正如你注意到他對'concat'的使用實際上是沒有任何操作的。 – user272735