У меня есть этот Pl / sql-запрос в хранимой процедуре Oracle [10g], который вызывается из программы на C # ::1001*
SELECT a,b
FROM t1, t2
WHERE
t1.Id=t2.Id
AND NVL (TO_CHAR (t1.externalId), t2.product_name) = prm_product_name
prm_product_name является входным параметром для процедуры и объявлен как:
prm_product_name VARCHAR2
Приложение передает «1000» или «2000» и т. Д. В качестве значения входного параметра в proc и может успешно получить результаты запроса в моем приложении на C #.
Но когда приложение передает определенное число, скажем 1500, запрос не возвращает никаких записей. Я также не вижу никаких исключений оракула в приложении.
Когда я изменяю оператор, как показано ниже, перекомпилирую proc, тогда запрос proc возвращает результаты.
AND NVL (TO_CHAR (t1.externalId), t2.product_name) = '1500'
Кроме того, я могу получить результаты из процесса, когда я вызываю его с помощью редактора sql [без жесткого кодирования 1500]. Только когда он вызывается из приложения, он не возвращает результаты.
Я не в состоянии понять это поведение и его причину.
Не могли бы вы посоветовать, как это работает?
Спасибо.