关于字串的问题

HeavenHe 2003-08-25 10:31:24
begin
--grade and grade_flag
begin
if(cc.grade='Z' and cc.grade_flag='N') then
B:='_Z';
elsif(cc.grade='P' and cc.grade_flag='N') then
B:='_P';
elsif(cc.grade='N' and cc.grade_flag='N') then
B:='_N';
elsif(cc.grade='V' and cc.grade_flag='N') then
B:='_V';
elsif(cc.grade='P' and cc.grade_flag='Y') then
B:='_Z'||'_P';
elsif(cc.grade='N' and cc.grade_flag='Y') then
B:='_Z'||'_P'||'_N';
elsif(cc.grade='V' and cc.grade_flag='Y') then
B:='_Z'||'_P'||'_N'||'_V';
end if;

end;
在这段程序中当cc.grade='V' and cc.grade_flag='Y'时B是不是('_Z','_P','_N','_V')啊?
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzszp 2003-08-25
  • 打赏
  • 举报
回复
这样
STR := 'SELECT * FROM TBNAME WHERE COLNAME IN ('||CHR(39)||B||CHR(39)||')';
EXECUTE IMMEDIATE STR;
HeavenHe 2003-08-25
  • 打赏
  • 举报
回复
if(cc.grade='Z' and cc.grade_flag='N') then
B:='_Z';

此时,in (B)是什么样的啊?
HeavenHe 2003-08-25
  • 打赏
  • 举报
回复

可是还是不好用啊。
我用in('_Z','_P','_V','_N')就能查到资料但是用in (B)就查不到,为什么啊?难道是我还有其他的地方写错了吗?
bzszp 2003-08-25
  • 打赏
  • 举报
回复
代表一个'号
HeavenHe 2003-08-25
  • 打赏
  • 举报
回复
chr(39)是什么意思啊?
bzszp 2003-08-25
  • 打赏
  • 举报
回复
B:='_Z'||'_P'||'_N'||'_V';
改成
B:=chr(39)||'_Z'||chr(39)||','||chr(39)||'_P'||chr(39)||','||chr(39)||'_N'||chr(39)||','||chr(39)||'_V'||chr(39);
HeavenHe 2003-08-25
  • 打赏
  • 举报
回复
那如何能让他是('_Z','_P','_N','_V')呢?
hrb_qiuyb 2003-08-25
  • 打赏
  • 举报
回复
B是_Z_P_N_V'
HeavenHe 2003-08-25
  • 打赏
  • 举报
回复
我们老板是这么解决的
and substr(a.subinventory_code,5,1) in
(select grade from
(
select 'Z' grade,1 seq from dual union
select 'P'grade ,2 seq from dual union
select 'N' grade,3 seq from dual union
select 'V' grade,4 seq from dual
order by seq
) grade_list
where seq <=
(select seq from
(
select 'Z' grade,1 seq from dual union
select 'P'grade ,2 seq from dual union
select 'N' grade,3 seq from dual union
select 'V' grade,4 seq from dual
)
where grade=cc.grade
)
)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧