楼主: oracleuser2005

请教!!!在REPORT参数中,怎样能实现如果用户什么都不输就是默认全部呢?

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2005-5-13 17:23 | 只看该作者
谢谢各位。

但是我仍然查不出来数据。好像用过滤器可以解决这个问题,但是我不知道直接写语句为什么不能实现。

使用道具 举报

回复
论坛徽章:
7
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-07-16 22:33:42ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44奥运会纪念徽章:羽毛球
日期:2008-09-05 09:13:28生肖徽章2007版:龙
日期:2009-04-29 10:18:26ITPUB学员
日期:2010-01-05 10:37:53
12#
发表于 2005-5-13 17:26 | 只看该作者
你可以跟踪一下,看看你的:p_vendor_name ,在哪个时候到底是什么值

使用道具 举报

回复
论坛徽章:
24
ITPUB元老
日期:2007-08-09 20:13:55蜘蛛蛋
日期:2012-11-18 21:00:26灰彻蛋
日期:2012-04-14 18:30:002012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282011新春纪念徽章
日期:2011-02-18 11:43:342010年世界杯参赛球队:尼日利亚
日期:2010-03-16 13:40:192009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:虎
日期:2009-07-22 09:38:24奥运会纪念徽章:赛艇
日期:2008-10-24 13:25:17
13#
发表于 2005-5-13 17:37 | 只看该作者
最初由 fish919 发布
[B]AND c.vendor_name =NVL(:p_vendor_name, c.vendor_name) [/B]


这个就可以!!如果不行,确定_vendor_name传进来的是空值!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
发表于 2005-5-13 20:15 | 只看该作者
对啊,看看你的vendor_name 是不是空的
这样加吧nvl(c.vendor_name,'a') =NVL(:p_vendor_name,nvl( c.vendor_name,'a'))

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2005-5-16 04:19 | 只看该作者

根本就不是一个问题

在SQL Query里引用Lexical Parameter做Where 子句,

select .....
from ....
&Param

if : p_vendor is not null
then
    : param := : param || ' where vendor = '|| : p_vendor;
end if;

某用户参数若为空,则根本不判断它。

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2005-5-16 10:35 | 只看该作者
谢谢各位!

参数VENDOR_NAME是从值列表中,通过SELECT取的值。所以一直不为空。

我把最上一行显示**********************当成空,是不是不行?

使用道具 举报

回复
论坛徽章:
16
每日论坛发贴之星
日期:2005-04-30 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-07-28 14:12:46每日论坛发贴之星
日期:2005-05-21 01:01:12每日论坛发贴之星
日期:2005-05-18 01:01:13每日论坛发贴之星
日期:2005-05-17 01:01:10每周论坛发贴之星
日期:2005-05-15 01:35:10每日论坛发贴之星
日期:2005-05-14 01:01:11每日论坛发贴之星
日期:2005-05-13 01:01:12
17#
发表于 2005-5-23 13:44 | 只看该作者
你可以下载系统自带的标准报表看看,并不是很复杂的。

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
18#
发表于 2005-5-24 13:38 | 只看该作者
最初由 oracleuser2005 发布
[B]谢谢各位!

参数VENDOR_NAME是从值列表中,通过SELECT取的值。所以一直不为空。

我把最上一行显示**********************当成空,是不是不行? [/B]


不行,不能那样,:P_VENDE根本无法返回NULL.也就是说,你的结果不是你想要的.

其实,对于这个需求,前面提到的两个方法都是很好的方法.我一直都在用.
不过:
select .....
from ....
&Param

if : p_vendor is not null
then
: param := : param || ' where vendor = '|| : p_vendor;
end if;

这种方法是ORACLE标准的.
我用的比较多的还是HARRY_SHAN的那种.

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
19#
发表于 2005-5-24 13:42 | 只看该作者
还有,你如果需要用到NULL值以代表全部,那就在值列表中直接加入一个NULL值,如:
...
UNION
SELECT NULL  FROM DUAL
...

后面就写入HARRY_SHAN提供的代码就可以了.

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2005-5-25 19:53 | 只看该作者

..

and (aram is null or colname=aram)

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表