Не удается отфильтровать Oracle SELECT в ASPX
Часть источника данных 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: недопустимое число, как только я ввожу в него символы.
2 ответа
Спасибо за попытку "птичьих губ".
К сожалению, на сервере Oracle было включено только минимальное ведение журнала.
Вдобавок ко всему, когда я посещал DBA, stackru каким-то образом оказался в списке запрещенных сайтов нашей компании. Поэтому я не мог поделиться ответом.
Это должно быть малоизвестным фактом об Oracle, поскольку наши два администратора баз данных тоже его не уловили: Oracle считает, что плюсы - это числа, независимо от контекста.
Это сработало, как только я сменил + на ||
Вам нужно использовать одинарные кавычки вокруг текста при использовании оператора like со строкой.
Это должно выглядеть
AND CC_DESCR LIKE '%VALUE%'