函数中根据参数生成子表的问题

charmw 2004-07-03 09:56:38
CREATE OR REPLACE FUNCTION FuryouDetail(
strJituDay IN CHAR,
strKyakuCode IN VARCHAR2,
strHinban IN VARCHAR2,
strKoutei IN VARCHAR2,
strFuryou IN CHAR,
strJituDayF IN CHAR,
strJituDayT IN CHAR)
RETURN VARCHAR2
IS
strResult VARCHAR2(4000);
dblAll NUMBER(10,2):=0;
BEGIN
FOR CUR IN ( SELECT
MI14.FURYOUNO,
NVL(TAB1.FURYOUVAL,0) FURYOUVAL
FROM
MI14,( SELECT
FURYOUITEM,
SUM(FURYOUVAL) FURYOUVAL
FROM
FI18
WHERE
----------------------------------------------------------------------
以下想根据参数是否为空来生成不同的AND条件 请问高手该如何解决???
JITUDAY = strJituday
AND
KYAKUSAKICODE = strKyakuCode
AND
HINBAN = strHinban
GROUP BY
FURYOUITEM) TAB1
-----------------------------------------------------------------------
WHERE
MI14.FURYOUNO=TAB1.FURYOUITEM(+))
LOOP
strResult:=strResult || CUR.FURYOUVAL || ',';
dblAll:=dblAll+TO_NUMBER(CUR.FURYOUVAL);
END LOOP;
strResult:=TO_CHAR(dblAll) || ',' || RTRIM(strResult,',');
RETURN strResult;
EXCEPTION
WHEN OTHERS
THEN
Return '';
END;
...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinya2003 2004-07-05
  • 打赏
  • 举报
回复
JITUDAY = strJituday
AND
KYAKUSAKICODE = nvl(strKyakuCode,KYAKUSAKICODE )
AND
HINBAN = nvl(strHinban,HINBAN )

楼主是要的这个效果吗?如果输入的参数strKyakuCode为空,则该条件不用,条件变成KYAKUSAKICODE =KYAKUSAKICODE 是成立的,下面的那个也一样.
hot.wind 2004-07-03
  • 打赏
  • 举报
回复
需要用到动态游标,如果不想使用动态游标,需要通过判断参数的值写出完整的查询。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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