【发布时间】:2015-04-21 12:30:28
【问题描述】:
我正在尝试编写一个 PL SQL 函数,但是我在格式和一般语法方面遇到了一些问题。
这是我当前的代码:
create or replace function getName(name IN varchar, organisation OUT varchar,
xcoord OUT number, ycoord OUT number, errormsg OUT varchar)
return varchar2
as
begin
Select name, LOCX, LOCY
from BBT_POI
WHERE (UPPER(name) LIKE UPPER('%'|| NAME || '%'));
return NAME;
end;
/
variable input varchar;
Variable errormsg varchar;
Variable organisation varchar;
Variable x NUMBER;
Variable y NUMBER;
execute getName ('yach', organisation, x, y, errormsg);
这些是我运行创建或替换功能命令时的错误消息:
FUNCTION GETNAME compiled
Errors: check compiler log
错误(5,3):PLS-00428:此 SELECT 语句中应有一个 INTO 子句
当我运行执行行时,我得到了这个:
Error starting at line : 40 in command -
execute getName ('yach', organisation, x, y, errormsg)
Error report -
ORA-06550: line 1, column 24:
PLS-00201: identifier 'ORGANISATION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
该过程应采用一个 IN 参数(名称或名称的一部分),并返回四个 OUT 参数(组织名称、X 坐标、Y 坐标、错误消息(如果没有错误消息,则返回 'none'被抛出))。
我知道目前代码不会查找错误,但我只是想让一个简单的版本正常工作,之后我可以添加更多功能。
【问题讨论】:
-
PL/SQL 真的可以与 MySQL 一起使用吗?考虑改为标记 Oracle?
-
错误很明显。您需要一个
into子句、一个变量,并在return语句中使用这个变量。