我的存储过程的功能是先获取当天日期(月日),比如今天是2008-07-17,那么月日就是0717,然后到DB_CustomSMS.dbo.tbl_SMResult_0717表中去查找MsgID=输入参数的值,如果没有一条记录,则到日期是上一天的表中去查询,如果找到就返回1,如果连续30天都找不到一条记录等于输入参数,那么就返回0
存储过程代码如下:
------------------------------------------------------------------------------------------------------
CREATE      procedure query_date@MsgID varchar(22)
AS
Declare
        @month char(2),
@day char(2),
@tableName nvarchar(150),
        @datestr varchar(10),
@curdate datetime,
@sql varchar(100),
@i  int
     
set @curdate=getdate()
set @i=1while (@i<=30)
   begin
        --print @curdate
        set @datestr=convert(varchar(10),@curdate,112)
       -- print @datestr set @month=substring(@datestr,5,2)
--print @month
        set @day=substring(@datestr,7,2)
--print @day
        
        set @tableName='DB_CustomSMS.dbo.tbl_SMResult_'+@month+@day
--print @tableName
        set @sql=' Select * from '+ @tableName+ ' where MsgID='+@MsgID
     
print @sql
exec(@sql)
     
if @@rowcount=0
  set @curdate=@curdate-1
        else 
           return 1
set @i=@i+1
   end
    
 if (@i>30)
  return 0
GO--------------------------------------------------------------------------------
java调用如下:
      外部参数smID=10
      public void callProcedure(long smID)
       {
        Connection conn=getConnection();
         String query = "{? =call dbo.query_date(?)}";
        st = conn.prepareCall(query);
        st.registerOutParameter(1, java.sql.Types.INTEGER);
//        st.setInt(1, 0);
        System.out.println("smID=" + smID);
        st.setString(2, String.valueOf(smID));
        System.out.println("执行前retValue= " + retValue);
        st.execute();
        retValue = st.getInt(1);
        System.out.println("执行后retValue= " + retValue);
        st.close();
        conn.close();
        if (retValue == 1) {
            System.out.println("找到回执短信");
        } else {
            System.out.println("没有找到一条回执短信");
        }
     }
---------------------------------------------------------------------------------------运行结果始终是:
执行前retValue= -1
执行后retValue= 0
没有找到一条回执短信
---------------------
我在数据库中表DB_CustomSMS.dbo.tbl_SMResult_0715中设置了
MsgID=10的记录了
结果应该返回1才对啊,可是为什么总是得不到1呢?
哪位大哥帮忙解决一下啊,多谢了!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yyl8114】截止到2008-07-17 17:06:24的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    哪位大哥帮忙解决一下啊?
    我的这个存储过程是在另外一个数据库中的
    是不是java应用程序中调用改存储过程的时候
    没有建立DB_CustomSMS数据库的连接而导致改
    存储过程没有被执行的原因啊???
      

  3.   

    在你的存储过程最后加上一个
    select x(x是你要返回的变量)
    程序里写
    rs.getint("x");
    看看存储过程没问题  就是在取出的时候出现的问题