在存储过程中有如下sql语句:select decode(id,0,0,id) as id into result_id from tablename where condition = condition_para;我希望实现如下功能:
如果查询到记录,则返回查询到的id字段的值。
如果没有查询到记录,则返回0。我把decode函数改为decode(id,null,0,id),也不能实现。该查询肯定只会返回一条记录,如果有的话,不用担心into的问题。id的类型是int。希望各位大虾能提供一个解决方案,谢谢先。
如果查询到记录,则返回查询到的id字段的值。
如果没有查询到记录,则返回0。我把decode函数改为decode(id,null,0,id),也不能实现。该查询肯定只会返回一条记录,如果有的话,不用担心into的问题。id的类型是int。希望各位大虾能提供一个解决方案,谢谢先。
解决方案 »
- connect by prior的问题!
- 一个查询速度问题(bug)
- PL/SQL中如何把数据集导出成固定的文本格式,谁有实例,帮帮我!!!
- 聪明的人:华为的1个合作商公司考的比试题???
- 在新的oracle环境里导入数据问题
- 请教各位大虾一个关于like的用法??
- 刚安装oracle8i有一点小问题(在线急等望各位大侠多多帮忙)
- 请问:使用用户A创建的数据表,能否控制只能用户A能对其操作,而不让任何其他用户能浏览、操作数据表的结构、数据等(包括管理员sys,syst
- 请问如何利用select 或者insert语句快速生成一个和已有表机构一样的表?
- VC6.0 用ADO连Oracle数据库遇到的问题。
- 菜鸟求助一个关于PRO C的问题!
- 相信高手们都已解决这个问题,请帮小弟一把
还有decode(id,0,0,id)没有意义呀.
decode是没有意义。
我还是考虑用异常来做算了,查两次开销就大了。
还是谢谢了。
CREATE TABLE TABLE1(ID INT,condition VARCHAR2(10));
INSERT INTO TABLE1 VALUES(1,'A');
INSERT INTO TABLE1 VALUES(2,'B');
INSERT INTO TABLE1(condition) VALUES('C');
COMMIT;create or replace procedure MYPROCDURE(condition_para varchar2) as
result_id INT;
begin
select NVL(id,0) as id into result_id from TABLE1 where condition = condition_para;
dbms_output.put_line(result_id);
end;
/
SQL> set serveroutput on
SQL> EXEC MYPROCDURE('A');
1PL/SQL 过程已成功完成。SQL> EXEC MYPROCDURE('C');
0PL/SQL 过程已成功完成。
用游标判断如果有数据就把值赋给result_id,如果没有数据的话result_id就为0可否这样?
我的意思是EXEC MYPROCDURE('D'),查询根本不存在的行,然后返回0。to mantisXF(枫の叶):
就几句话,我不想用游标。还是决定用异常了,结贴了,谢谢大家。