带参数的存储过程 发生奇怪的异常 请帮帮忙

带参数的存储过程 发生奇怪的错误 请帮帮忙~
本帖最后由 kexinmei 于 2013-12-25 09:09:48 编辑
恨啊,这已经是第二次遇到这个问题了。这条sql语句在where条件不使用变量时可以正常执行,当使用变量作为条件时,会报未找到任何记录的错误。
带参数的存储过程 发生奇怪的异常 请帮帮忙
带参数的存储过程 发生奇怪的异常 请帮帮忙
上次遇到这个问题,用转型做了处理,可以绕过。这次尝试了很多方法都绕不过这个问题,Google也无人曾遇到这个错误。请大家帮忙忙~ 看看问题出在哪里
带参数的存储过程 发生奇怪的异常 请帮帮忙

------解决方案--------------------
引用:
Quote: 引用:

调试一下,看看变量的值。这可能是变量的值有问题导致没数据

嗯 调试看变量的值是正常的。试过直接把这个参数值写死,像是where a.fnumber='调试时看到的变量值' 可以正常执行。
应该是type定义的关系,你在过程里给它重新赋值下看看(就是你说的转型),然后你单步测试,看看你那个type类型的变量,有没有赋值到v_contnum
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

调试一下,看看变量的值。这可能是变量的值有问题导致没数据

嗯 调试看变量的值是正常的。试过直接把这个参数值写死,像是where a.fnumber='调试时看到的变量值' 可以正常执行。
应该是type定义的关系,你在过程里给它重新赋值下看看(就是你说的转型),然后你单步测试,看看你那个type类型的变量,有没有赋值到v_contnum

测试过重新赋值,代码见7楼。值可以正常赋给v_contnum,但查询时仍报错。

我想的是要不你传入参数的时候变量类型直接写成和下面的类型一样嘛,这样就不用再进行类型转换。
比如: contNum t_sd_salecontract.fnumber%type -->contNum varchar2
然后再where中直接用这个参数