Asp.net Can';t在ASPX中筛选Oracle SELECT

Asp.net Can';t在ASPX中筛选Oracle SELECT,asp.net,oracle,ora-01722,Asp.net,Oracle,Ora 01722,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

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中,当文本框为空时,我不会得到任何结果,而ORA-01722:当我在文本框中输入字符时,该数字无效。

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

它需要看起来像

AND CC_DESCR LIKE '%VALUE%'
谢谢你的尝试,“小鸟。”

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

除此之外,当我访问DBA时,stackoverflow不知何故被列入了我们公司的禁止网站名单。所以我无法分享答案

这一定是关于Oracle的一个鲜为人知的事实,因为我们的两位DBA也没有抓住它:Oracle认为无论上下文如何,plus都代表数字


当我将+更改为|

时,它就开始工作了,谢谢,但是在和CC.DESCR中有单引号,比如“%”+:DName+“%”,顺便说一下,像“%:DName%”这样的CC.DESCR也会得到同样的结果如果你指的是SQL,这是个问题。如果你的意思是别的,我不知道你的意思。我希望看到你的SQL输出是在ORACLE中运行的,而不是你如何编码的。我想要运行时SQL。我不知道如何将参数化ASP.Net SQL放入SQLPlus提示符。如果您有调试器,您应该能够获得它。此外,检查日志,您可能会幸运地在那里看到输出。
|
实际上是ANSI标准的字符串连接运算符,因此找到它并不罕见。
AND CC_DESCR LIKE '%VALUE%'