我想让存储过程调用3个参数返回值分别为1、2、0。由于刚接触不会写返回3个参数的过程。WHEN ERR_NOTFOUNDXY THEN
DBMS_OUTPUT.PUT_LINE('必须指定门牌地址表中的门牌编号没有找到坐标值');
RETURN FALSE;
例子:(虽然编译,但知道是错的。)PROCEDURE XSDOORADDPOINT(XSAJBH XS_AJJBXX.AJBH%TYPE,DOORID T_DZ_MPDZ.ADDRESSID%TYPE,IRETURN IN OUT INT )IS
BEGIN
IF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = TRUE THEN
IRETURN :=1;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,NULL) = FALSE THEN
IRETURN :=2;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = FALSE THEN
IRETURN :=0;
END IF;
END XSDOORADDPOINT;我想让ERR_NOTFOUNDXY 属于PROCEDURE里 IRETURN :=2
就是说当触发ERR_NOTFOUNDXY这个错误时,返回值为2。
但不知该怎么写。
DBMS_OUTPUT.PUT_LINE('必须指定门牌地址表中的门牌编号没有找到坐标值');
RETURN FALSE;
例子:(虽然编译,但知道是错的。)PROCEDURE XSDOORADDPOINT(XSAJBH XS_AJJBXX.AJBH%TYPE,DOORID T_DZ_MPDZ.ADDRESSID%TYPE,IRETURN IN OUT INT )IS
BEGIN
IF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = TRUE THEN
IRETURN :=1;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,NULL) = FALSE THEN
IRETURN :=2;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = FALSE THEN
IRETURN :=0;
END IF;
END XSDOORADDPOINT;我想让ERR_NOTFOUNDXY 属于PROCEDURE里 IRETURN :=2
就是说当触发ERR_NOTFOUNDXY这个错误时,返回值为2。
但不知该怎么写。
解决方案 »
- 为什么like里面用[]和^不起作用
- 两台服务器两个表之间更新
- orcale 版本
- 关于ORACLE SPATIAL(9I)/SD(8I)的访问经验
- 在oracle中创建不同用户,看到同样的表,但是只能看到当前用户自己的数据
- 连不到ORACLE
- 在配置全文检索时,是不是当可用contains查询时就已经配置好了?
- KingSunSha(弱水三千),轻轻来又轻轻走,为什么不留个通讯方式!
- 怎样去掉Oracle数据库中姓名字段中的空格,可能有一个空格,也可能有多个
- oracle中执行建表语句时,出现ORA-01450错误:超出最大的关键字长度(6398)
- with xx as do 的用法
- SQL Plus 或者 SQL 命令行?
BEGIN
IF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = TRUE THEN
IRETURN :=1;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,NULL) = FALSE THEN
IRETURN :=2;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = FALSE THEN
IRETURN :=0;
END IF;
WHEN ERR_NOTFOUNDXY THEN
DBMS_OUTPUT.PUT_LINE('必须指定门牌地址表中的门牌编号没有找到坐标值');
IRETURN :=2;
END XSDOORADDPOINT;
Compilation errors for PACKAGE BODY DLGADATA.AJXXMANAGERError: PLS-00103: 出现符号 "WHEN"在需要下列之一时:
begin case declare end
exception exit for goto if loop mod null pragma raise return
select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge
<a single-quoted SQL string> pipe
符号 "case" 被替换为 "WHEN" 后继续。
Line: 79
Text: WHEN ERR_NOTFOUNDXY THENError: PLS-00103: 出现符号 "XSDOORADDPOINT"在需要下列之一时:
case
Line: 88
Text: END XSDOORADDPOINT;Error: PLS-00103: 出现符号 "END"在需要下列之一时:
begin function package
pragma procedure form
Line: 844
Text: END AJXXMANAGER;
BEGIN
IF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = TRUE THEN
IRETURN :=1;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,NULL) = FALSE THEN
IRETURN :=2;
ELSIF XSDOORADDPOINT_FUC(XSAJBH,DOORID) = FALSE THEN
IRETURN :=0;
END IF;
exception
WHEN ERR_NOTFOUNDXY THEN
DBMS_OUTPUT.PUT_LINE('必须指定门牌地址表中的门牌编号没有找到坐标值');
IRETURN :=2;
END XSDOORADDPOINT;--ERR_NOTFOUNDXY 异常是你自定义的么
exception
when no_data_found then
dbms_output.put_line(err_msg);
when others then
dbms_output.put_line(err_msg);
...
--判断入参为空
if nvl(in_val,'xxx')='xxx' then --nvl函数判断in_val变量是否为空
DBMS_OUTPUT.PUT_LINE('必须指定门牌地址表中的门牌编号没有找到坐标值');
IRETURN :=2;
return; --返回
end if;
不定非得用exception啊