首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

数据窗口的参数有关问题

2012-03-06 
数据窗口的参数问题ORACLE中一表,有字段dept_code,a,b,c做了一个数据窗口,按科室检索,SQL如下select dept_

数据窗口的参数问题
ORACLE中一表,有字段dept_code,a,b,c
做了一个数据窗口,按科室检索,SQL如下
select dept_code,a,b,c where dept_code = :idept 
其中idept为参数,这样当Retrieve('2201')的时候可以检索到科室2201的资料
但是,我想此数据窗口也能列出全部科室的资料,可有办法实现?
要求不在程序中修改此数据窗口的SQL语句。
印象中在某位高人的博客中见过解决方法,但记不得了,他的数据窗口SQL语句如何写忘了,
Retrieve()带参数则检索出某科室,Retrieve()不带参数则检索出所有。。。。。。

[解决办法]
1、方法一:常用的方法,动态设置setsqlselect或table.select,但楼主不想用这个;
2、方法二:建议使用like,如果想查询所有就用retrieve('%'),否则就是直接的那个ID,比如retrieve('2201');
3、补充:在不改变数据窗口的语法情况下,如果数据窗口对象在定义的时候带了参数,不管参数又无引用,retrieve时如果不带参数都会失败的
[解决办法]
这几天刚才在做类似的,不过我的是SQL Server ,在通配符上有区别。
在建DW的时候这么做:
select dept_code,a,b,c where dept_code like :idept 

然后在retrieve 的时候就像PB8 哥说的第二点那样引用。

[解决办法]
俺又招

idept 应该是你定义的一个参数了 ,那么再定义一个参数 iflag

sql语句改写成

select dept_code,a,b,c where (dept_code = :idept Or 1= :iflag)

这样要查询具体部门的时候 iflag 传入 0 , 要查询全部的时候 idept 随便传一个字符串 ,iflag 传入 1 ,

收分
[解决办法]
2楼第二个方法好!

热点排行