1 涉及 的表tableA,包括字段a1,a2;tableB包括字段b1,a2.这些字段都是nvarchar2类型
2 其中我对于tableA的数据曾经做过update tableA set a2=某常量值的操作----注意这里是个常量
3 而对于表tableB我则是通过如下操作4 建立了一个存储过程包含一个clob类型的in参数param1。在存储过程中我通过循环截取这个param1参数值,将截取到的字符串写入到这样一个查询语句中 select a2 into tempparam from tableA where a2=截取的字符串变量(恰好,其中一次循环截取到的字符串变量等于或者说是看上去等与我2中操作过的常量值,但是通过调试我发现这样查询不到任何记录。5 在4提到的查询语句后,我还会将截取到的字符串写入到插入语句(insert into tableB(b1,a2) values('fdsa',截取字符串的变量)。6 不解的是我后来在5操作过后在存储过程里面加了个查询语句:select a2 from tableA where a2=截取这个param1参数值操作后得到的字符串变量,这里居然查询出现了记录。补充:1 我是使用asp.net2.0调用这个存储过程,webconfig中配置的全球化为gb2312,传入的值是源于一个文本框asp.net服务器端控件。      2 我用的是oracle9i,tablea的数据不能重新使用insert插入。
 
     3 是不是我传入的字符串应该需要编码下了?(字符串内容实际上就是逗号和数字)
不知道各位朋友能否帮我看看,如何才能在步骤4中能查询得到记录

解决方案 »

  1.   

    你说你的6,得到了纪录。这个时候,你在用6的句子,修改一下表名为tablea,可以查询到什么吗?感觉好像是你的确认的问题,赫赫。你可以把每次检查的key,输出去看看的。
      

  2.   

    select   a2   into   tempparam   from   tableA   where   a2=截取的字符串变量
    这句话怎么看都是多余的。。
    tempparam := 截取的字符串变量,这样似乎完全可以代替!
      

  3.   

    楼主这样的问题很难回答,首先出现楼主这样的情况从逻辑上看是很没有道理的,步骤4的查询和步骤6之间的查询就增加了一个和tableA表完全无关的操作,但结果却不一样,和乱码肯定没有关系,因为你步骤6是查询出结果的。其次,没有完整的楼主的SQL代码和表数值,很难分析和重现结果。
    建议楼主要么再仔细跟踪调试一下你的代码,看是否什么地方弄错了,如空格等等,要么结贴散分。如果还找不出来要么完整地贴出代码及完整的表的脚本,以方便别人重现。