oracle 存储过程 空值赋值问题 10
前省略使用游标selectpk_periodintov_pk_period_hbfromdemo_dim_periodwheredatestr=v_datestr_hb;...
前省略
使用游标
select pk_period into v_pk_period_hb from demo_dim_period where datestr=v_datestr_hb;----当我查询记录中 pk_period 数据为空赋值怎么解决
后省略
nvl() 函数我早试过,不可以
第一、pk_period 不是数字类型
第二、datestr=v_datestr_hb v_datestr_hb的记录在数据库中不存在 所以查询出来的记录一行也没有
不知二位的结果是验证过没?
并且
select
case
when pk_period is null then
'<N/A>'
else
pk_period
end
from demo_dim_period
where datestr = '19990101'
这样也试过也不行 展开
使用游标
select pk_period into v_pk_period_hb from demo_dim_period where datestr=v_datestr_hb;----当我查询记录中 pk_period 数据为空赋值怎么解决
后省略
nvl() 函数我早试过,不可以
第一、pk_period 不是数字类型
第二、datestr=v_datestr_hb v_datestr_hb的记录在数据库中不存在 所以查询出来的记录一行也没有
不知二位的结果是验证过没?
并且
select
case
when pk_period is null then
'<N/A>'
else
pk_period
end
from demo_dim_period
where datestr = '19990101'
这样也试过也不行 展开
3个回答
展开全部
有2种方法解决
1 Select nvl(pk_period,null,'空值') Into
这样的话把空值赋个值了
2 用到EXCEPTION
Begin
Select aa Into bb From Talbe_Test;
Exception
When Others Then
...
End aabb;
...
End;
-----补充------
一般而言 对空值的处理要用到nvl函数。
看我的示例:
sql@kokooa>set serveroutput on;
sql@kokooa>
sql@kokooa>declare
2 var_name varchar2(20);
3 cursor test034_cur(p_test034_id number) is
4 select nvl(subject_name,'空值') from test034 where grade_id=p_test034_id;
5 begin
6 if test034_cur%isopen=false then
7 open test034_cur(3);
8 end if;
9
10
11 loop
12 fetch test034_cur into var_name;
13
14 exit when test034_cur%notfound;
15 dbms_output.put_line('课程名称为:'||var_name);
16 end loop;
17
18 close test034_cur;
19 end;
20 /
课程名称为:空值
PL/SQL procedure successfully completed.
如果还有什么问题 请补充
1 Select nvl(pk_period,null,'空值') Into
这样的话把空值赋个值了
2 用到EXCEPTION
Begin
Select aa Into bb From Talbe_Test;
Exception
When Others Then
...
End aabb;
...
End;
-----补充------
一般而言 对空值的处理要用到nvl函数。
看我的示例:
sql@kokooa>set serveroutput on;
sql@kokooa>
sql@kokooa>declare
2 var_name varchar2(20);
3 cursor test034_cur(p_test034_id number) is
4 select nvl(subject_name,'空值') from test034 where grade_id=p_test034_id;
5 begin
6 if test034_cur%isopen=false then
7 open test034_cur(3);
8 end if;
9
10
11 loop
12 fetch test034_cur into var_name;
13
14 exit when test034_cur%notfound;
15 dbms_output.put_line('课程名称为:'||var_name);
16 end loop;
17
18 close test034_cur;
19 end;
20 /
课程名称为:空值
PL/SQL procedure successfully completed.
如果还有什么问题 请补充
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如1楼,使用nvl()函数即可,
select nvl(pk_period,0) into...
若pk_period为空,那么v_pk_period_hb=0
前提:pk_period与v_pk_period_hb都是数字类型
select nvl(pk_period,0) into...
若pk_period为空,那么v_pk_period_hb=0
前提:pk_period与v_pk_period_hb都是数字类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、你说的问法有点问题,对数据是null的值要操作的话,自然是要用nvl函数。
2、如果你是想,当数据库中没有数据的时候,对变量初期化的话,就要判断下:【ONTFOUND】了。
if 有标名%ONTFOUND then
....
end if;
---
以上,希望对你有所帮助。
2、如果你是想,当数据库中没有数据的时候,对变量初期化的话,就要判断下:【ONTFOUND】了。
if 有标名%ONTFOUND then
....
end if;
---
以上,希望对你有所帮助。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询