rycy.net
当前位置:首页 >> orAClE存储过程判断空 >>

orAClE存储过程判断空

create procedure 过程名(inparam in varchar2) as begin if inparam is null then 普通查询; else 带where条件的查询; end if; end; 这样写试一下,看看是否好用。

可以 IS NULL 判断。 或者 NVL 函数来判断。 SQL> SELECT 2 NVL(sale_item, 'ALL') AS item, 3 SUM(sale_money) AS money 4 FROM 5 sale_report 6 GROUP BY 7 ROLLUP(sale_item); ITEM MONEY ------ ---------- A 733285 B 2382 C 5738 ALL 741405

问题1:当你传入37 时,IF FLAG>5 已经满足条件了,直接V_VALUE :=1;,不会继续判断了。然后就调到end if。可以按f9调试,不信一步步看它的执行过程。 问题2:IF V_NULL=NULL,不是这样写,是IF V_NULL IS NULL ,就会输出888啦。

你的IF 逻辑有问题:当输入37的时候 flag>5 肯定结果是1,不会进入else了。 你可以再第一行加上FLAG5 and FLAG10 THEN V_VALUE :=2; ELSIF FLAG

SQL> create table mmm as select * from dba_objects where rownum select count(*) from mmm; COUNT(*) ---------- 1 SQL> declare 2 i number; 3 begin 4 for i in 1..4 loop 5 insert into mmm select * from dba_objects; 6 commit; 7 end ...

已经经过测试,可以。 create table test1023(id int); --创建测试表 test1023 declare cnt int; begin select count(*) into cnt from test1023; if cnt=0 then insert into test1023 values('1'); commit; end if; end;

哪你改成 if ordersn is null then 就行了社。。

判断一下,只插入不为空的记录就可以了。 或者循环之前限制一下结果集。 select a.* from a where a.id is not null ;

可以绕个弯... 先可以用select count(*) 查询你游标的结果集,判断一下如果大于0 则说明有值,如果等于0就没有值,有值就继续执行打开游标,没有值的话就返回 DBMS_OUTPUT.PUT_LINE('没有返回值');

可以为空的,你在存储过程中可以 判断 if param is null then 语句; 来做判断这个参数param是空的 欢迎追问,满意请采纳

网站首页 | 网站地图
All rights reserved Powered by www.rycy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com