我的存储过程的功能是先获取当天日期(月日),比如今天是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呢?
哪位大哥帮忙解决一下啊,多谢了!
楼主【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
我的这个存储过程是在另外一个数据库中的
是不是java应用程序中调用改存储过程的时候
没有建立DB_CustomSMS数据库的连接而导致改
存储过程没有被执行的原因啊???
select x(x是你要返回的变量)
程序里写
rs.getint("x");
看看存储过程没问题 就是在取出的时候出现的问题