以下程序中的错误是啥?
Posted
技术标签:
【中文标题】以下程序中的错误是啥?【英文标题】:What is the error in the following program?以下程序中的错误是什么? 【发布时间】:2014-01-30 20:01:08 【问题描述】:这是我正在编写的 PL/SQL 程序,用于将字符串转换为 ascii 值,但我收到以下错误:
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
-
声明
buff数(3):=0;
函数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;
【问题讨论】:
你想创建一个函数吗?或者您是否尝试创建一个声明本地函数的匿名 PL/SQL 块? 它是一个函数.. 计算值的用户定义函数.. 【参考方案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;
/
Oracle 中没有concat
过程,必须使用赋值和连接运算符:
encodedString := encodedString || buff;
请看一下这个演示:http://sqlfiddle.com/#!4/21309/1
【讨论】:
Oracle 确实有一个concat
function。 concat
不会导致 OP 报告的编译失败。但正如您注意到的那样,他对concat
的使用实际上是一种无操作。以上是关于以下程序中的错误是啥?的主要内容,如果未能解决你的问题,请参考以下文章