高手们快来呀!!存储过程--情况紧急,快请进,来者有分!!!

yeaker 2002-01-10 10:10:19
///////以下sql server中的存储过程/////////////////////
CREATE PROCEDURE aa
@b varchar(100),
@c varchar(100) output
as
select count(*) from shangbb
set @c=@b
GO
///////以下是在jsp中调用存储过程的代码////////////////
ResultSet rs = null;
try {
conn = CallableBean.getConnection(); //连接数据库
conn.setAutoCommit(true);
csmt = conn.prepareCall("{call aa(?,?)}");
csmt.setString(1,"temp1mbb.txt");
csmt.registerOutParameter(2,java.sql.Types.VARCHAR);
rs=csmt.executeQuery();
out.print(csmt.getString(2));
while(rs.next()){
out.print(rs.getString(1));
}
}catch(SQLException ex) {
System.err.println("执行SQL语句出错:" + ex.getMessage());
}
请问我在调用时为什么总报错????
"执行SQL语句出错:No count was procedured!"
为什么呢
...全文
124 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
riverhorse 2002-03-18
  • 打赏
  • 举报
回复
我以前也常遇到类似的情况,有很多情况下,不是程序的错误,而是jdbc driver
的错误.
尤其是用jdbc-odbc bridge的时候,更是如此.
还有,劝大家不要用micro 的driver, 档次很低,bug狂多.
dmar 2002-03-18
  • 打赏
  • 举报
回复
我很少用sql server,不过,那条sql语句是否应该:
select count(*) into @b from shangbb
??
另外@b,@c为什么定义成varchar?
snowredfox 2002-03-18
  • 打赏
  • 举报
回复
Nice to meet u,:P
Soft21 2002-01-12
  • 打赏
  • 举报
回复
大家好啊,妙!
xmvigour 2002-01-10
  • 打赏
  • 举报
回复
无记录 也会返回0的,会不会该连接没有该表,或权限不够?猜测!
0legend 2002-01-10
  • 打赏
  • 举报
回复
无记录
skyyoung 2002-01-10
  • 打赏
  • 举报
回复
public static int storedProcWithResultSet (String parms) throws Exception
// Stored procedure to be called.
CallableStatement cs = conn.prepareCall
("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}");

// register input parameters
cs.registerOutParameter(1, java.sql.Types.INTEGER); // return code
cs.setString(2, "");
cs.setString(3, "");
cs.setString(4, parms);
// regsiter ouput parameters
cs.registerOutParameter(5, java.sql.Types.CHAR);
cs.registerOutParameter(6, java.sql.Types.CHAR);
cs.registerOutParameter(7, java.sql.Types.CHAR);

// Procedure execution
ResultSet rs = cs.executeQuery();

// Note that you need to retrieve the ResultSet _before_ retrieving
// OUTPUT parameters.
if ( rs == null)
System.out.println( "No resultSet!");
else {
// To retrieve columns info.
ResultSetMetaData rsmd = rs.getMetaData();
int nbCol = rsmd.getColumnCount();

int i = 0;
int j = 1;

Vector vResSet = new Vector();
while (rs.next ()) {
System.out.println( "Record " + (i+1));
// putting the ResultSet columns in a vector
for ( j = 1; j <= nbCol ; j++){
vResSet.insertElementAt(rs.getString(j), 0);
vResSet.addElement(rs.getString(j));
}

// Reading vector to print ResultSet data
for ( int k = 0 ; k < nbColonnes ; k++ ) {
if ( vResSet.elementAt(k) != null)
System.out.println( vResSet.elementAt(k).toString());
else
System.out.println( "Column " + (k+1) + " Null");
}
i++;
}
}

// Retrieving Strored Procedure OUTPUT parameters
System.out.println( "return code of Stored procedure = : " + cs.getInt(1));

// Retrieving OUTPUT parameters
for ( int i = 5 ; i <= 7; i ++)
System.out.println( "parameter " + i + " : " + cs.getString(i));

return cs.getInt(1);
}


FJY168 2002-01-10
  • 打赏
  • 举报
回复
望文生义:

执行SQL语句出错:No count was procedured!

执行SQL语句出错?!
执行SQL语句出错!?
执行SQL语句出错!!??
lpt 2002-01-10
  • 打赏
  • 举报
回复
SQL语句有问题吧
Patrick_DK 2002-01-10
  • 打赏
  • 举报
回复
紧急插播:

请各位高手帮忙给看看

http://www.csdn.net/expert/topic/468/468174.shtm

http://www.csdn.net/Expert/topic/468/468435.shtm

http://www.csdn.net/Expert/topic/468/468439.shtm
supkim 2002-01-10
  • 打赏
  • 举报
回复
sql语句有问题
xmvigour 2002-01-10
  • 打赏
  • 举报
回复
另外我用out.println(csmt.getUpdateCount());时返回的是-1,但如果在sql server 存储过程中没有 select 语句时,返回1!!,这是什么原因????

肯定是select有问题,所以ResultSet没有返回值!

getUpdateCount

public int getUpdateCount()
throws SQLException


Returns the current result as an update count; if the result is a ResultSet object or there are no more results, -1 is returned. This method should be called only once per result.

Returns:

the current result as an update count; -1 if the current result is a ResultSet object or there are no more results
yeaker 2002-01-10
  • 打赏
  • 举报
回复
楼上的兄台,没错,我在调试时也遇到了这样的情况,只是其中的道理不明白是怎么回事??另外我用out.println(csmt.getUpdateCount());时返回的是-1,但如果在sql server 存储过程中没有 select 语句时,返回1!!,这是什么原因????
xmvigour 2002-01-10
  • 打赏
  • 举报
回复
我在我机子上测试了一下,发现没错。
但out.print(csmt.getString(2));
while(rs.next()){
out.print(rs.getString(1));
}
取不到csmt.getString(2)值。换成
while(rs.next()){
out.print(rs.getString(1));
}
out.print(csmt.getString(2));才取到csmt.getString(2)值!!!



突然发现
System.out.print(csmt.getString(2));
while(rs.next()){
out.print(rs.getString(1));
}
System.out.print(csmt.getString(2));出现java程序出错必须重新启动!
yeaker 2002-01-10
  • 打赏
  • 举报
回复
记录肯定有,因为我在分析中运行时有3000条记录呢?权限也够,我用的是sa!!

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧