【发布时间】:2011-11-01 10:17:30
【问题描述】:
我在从 C# 程序调用的 Oracle[10g] 存储过程中有这个 Pl/sql 查询。:
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 是 proc 的输入参数,声明为:
prm_product_name VARCHAR2
应用程序将“1000”或“2000”等作为输入参数值传递给 proc,并且能够在我的 C# 应用程序中成功获取查询结果。 但是当应用程序通过一个特定的数字比如 1500 时,查询不会返回任何记录。我也没有在应用程序中看到任何 oracle 异常。 当我像下面这样修改语句时,重新编译proc,然后查询proc返回结果。
AND NVL (TO_CHAR (t1.externalId), t2.product_name) = '1500'
另外,当我使用 sql 编辑器调用它时,我能够从 proc 中获取结果[没有硬编码 1500]。只有从应用程序调用它时,它才不会返回结果。 我无法理解这种行为及其根本原因。 你能告诉我如何让它工作吗?
谢谢。
【问题讨论】:
-
如果不查看存储过程中的所有代码,很难诊断出您描述的行为。
-
那个特定的数字是 1500?请张贴程序和那个号码
标签: c# oracle error-handling plsql