以下程序中的错误是啥?

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 的使用实际上是一种无操作。

以上是关于以下程序中的错误是啥?的主要内容,如果未能解决你的问题,请参考以下文章

以下代码中的错误似乎是啥?

这个 Python 程序的错误是啥?

以下代码中的错误是啥?没有得到预期的输出

该程序中的分段错误是啥

是啥导致 cellForRowAtIndexPath 中的 outOfBounds 错误?

是啥导致 weka 中的 csv 加载错误?