create procedure register
@username varchar(20),
@password varchar(20),
@realName varchar(20),
@sex varchar(8)
as
declare @return int
insert into users values(@username,@password,@realName,@sex)
set * from users
select @return as aexec register 'aa','aa','aa','男' ----结果返回1
CallableStatement csta=null;
ResultSet res=null;
try
{
csta=GetConnection().prepareCall("{call dbo.register1(?,?,?,?)}");
psta.setObject(1, "aa");
psta.setObject(2, "bb");
psta.setObject(3, "cc");
psta.setObject(4, "dd");
res=csta.executeQuery();
return res;
}
catch(Exception ex)
{
System.out.println("dddd");
ex.printStackTrace();
return null;
}结果报错 : 该语句没有返回结果集。哪位高手帮忙看下,当我的存储过程中只有一个查询操作时,程序可以正常运行,可是,在在存储过程上添加一个插入操作时就会报错了,请各位大侠帮忙解决下这个问题,不胜感激!!!
@username varchar(20),
@password varchar(20),
@realName varchar(20),
@sex varchar(8)
as
declare @return int
insert into users values(@username,@password,@realName,@sex)
set * from users
select @return as aexec register 'aa','aa','aa','男' ----结果返回1
CallableStatement csta=null;
ResultSet res=null;
try
{
csta=GetConnection().prepareCall("{call dbo.register1(?,?,?,?)}");
psta.setObject(1, "aa");
psta.setObject(2, "bb");
psta.setObject(3, "cc");
psta.setObject(4, "dd");
res=csta.executeQuery();
return res;
}
catch(Exception ex)
{
System.out.println("dddd");
ex.printStackTrace();
return null;
}结果报错 : 该语句没有返回结果集。哪位高手帮忙看下,当我的存储过程中只有一个查询操作时,程序可以正常运行,可是,在在存储过程上添加一个插入操作时就会报错了,请各位大侠帮忙解决下这个问题,不胜感激!!!
bool flag = false;
int res= -1;
try
{
csta=GetConnection().prepareCall("{call dbo.register1(?,?,?,?)}");
psta.setObject(1, "aa");
psta.setObject(2, "bb");
psta.setObject(3, "cc");
psta.setObject(4, "dd");
flag=csta.execute();
if(!flag){
res = cata.getUpdateCount();
return res;
}
return 0;
}
catch(Exception ex)
{
System.out.println("dddd");
ex.printStackTrace();
return 0;
} ---------------------------------------------------------------------------
if(res == 0) 没有插入,可能是SQL语法等错误或DDL错误
if(res == 1) OK.插入这个int 值不是你存储过程中定义的as a那个select语句返的。
对于插入操作不需要你自己select 它的操作成功记录
flag = csta.execute如果为true说明返回结果集,为flase说明返回了更新计数
你下面的select操作实际上使这个存储过程返回了多结果集(更新操作返回的int也算一种结果)
要想取到a值实际上要这样处理:http://blog.csdn.net/axman/archive/2006/07/07/887904.aspx