0

ASP.Net 2 数据源的一部分:

  SelectCommand="SELECT BU.P_GEAC_CORP_CD AS Corp_Code,
                        BU.Business_unit  as Abbreviation,
                        CC.DEPTID         AS Cost_Center,
                        CC.DESCR          AS Description
                 FROM fstst.PS_P_CATR_BUDPT_VW CC,
                      fstst.ps_p_bus_unit_cnv  BU 
                 WHERE BU.Business_unit = CC.Business_unit">

这提供了一个有效的 GridView。显示屏显示

CC.DESCR          AS Description

是文本(非数字)。

我想使用文本框作为“包含”过滤器,即,如果我在框中输入“恢复”,我希望添加数据源

AND CC.DESCR Like '%Recovery%'

到 SQL。如果我对该行进行硬编码,它就可以工作。

但是如果我添加

 <SelectParameters>
    <asp:ControlParameter ControlID="Dept_Name"
                          Name="DName"
                          PropertyName="Text"
                          Type="string" />
 </SelectParameters>

在不更改 SQL 的情况下,我没有返回任何行。然后,如果我把

AND CC.DESCR Like '%' + :DName + '%'

进入 SQL,当文本框为空白时,我没有得到任何结果,并且 ORA-01722:当我将字符放入其中时,数字无效。

4

2 回答 2

1

感谢您的尝试,“鸟嘴”。

不幸的是,Oracle 服务器只打开了最少的日志记录。

最重要的是,当我访问 DBA 时,stackoverflow 不知何故出现在我们公司的禁止站点列表中。所以我无法分享答案。

这一定是关于 Oracle 的一个鲜为人知的事实,因为我们的两个 DBA 也没有意识到这一点:Oracle 认为plus是针对数字的,无论上下文如何。

我将+更改为||后它就起作用了

于 2009-07-29T11:54:15.853 回答
0

当使用带有字符串的 like 语句时,您需要在文本周围使用单引号。

它需要看起来像

AND CC_DESCR LIKE '%VALUE%'
于 2009-07-28T19:08:56.830 回答