Java中与MSSQL存储过程交互
1
String strSQL
=
"
{?=call mytest1(?,?)}
"
;
2 java.sql.CallableStatement sqlStmt = con.prepareCall(strSQL);
3
4 sqlStmt.setString( 2 , " 111 " );
5 sqlStmt.setString( 3 , " 222 " );
6
7 sqlStmt.setString( 2 , " strName " ); // 存储过程的第一个参数
8 sqlStmt.setString( 3 , " 111 " ); // 存储过程的第二个参数
9
10 sqlStmt.registerOutParameter( 1 ,java.sql.Types.INTEGER); // 第一个问号,return值
11 sqlStmt.registerOutParameter( 3 ,java.sql.Types.VARCHAR); // 第三个问号,绑定存储过程的第二个参数
12
13 ResultSet rs = sqlStmt.executeQuery();
14 rs.next();
15
16 System.out.println(rs.getString( " id " )); // ResultSet对象
17 System.out.println(sqlStmt.getInt( 1 )); // return值
18 System.out.println(sqlStmt.getString( 3 )); // 第二个参数返回值
19
2 java.sql.CallableStatement sqlStmt = con.prepareCall(strSQL);
3
4 sqlStmt.setString( 2 , " 111 " );
5 sqlStmt.setString( 3 , " 222 " );
6
7 sqlStmt.setString( 2 , " strName " ); // 存储过程的第一个参数
8 sqlStmt.setString( 3 , " 111 " ); // 存储过程的第二个参数
9
10 sqlStmt.registerOutParameter( 1 ,java.sql.Types.INTEGER); // 第一个问号,return值
11 sqlStmt.registerOutParameter( 3 ,java.sql.Types.VARCHAR); // 第三个问号,绑定存储过程的第二个参数
12
13 ResultSet rs = sqlStmt.executeQuery();
14 rs.next();
15
16 System.out.println(rs.getString( " id " )); // ResultSet对象
17 System.out.println(sqlStmt.getInt( 1 )); // return值
18 System.out.println(sqlStmt.getString( 3 )); // 第二个参数返回值
19
-------------------------------------------------------------------------------------------------------------------------
如不需要参数,直接用ResultSet rs = stmt.executeQuery(过程名);即可
-------------------------------------------------------------------------------------------------------------------------
SET
QUOTED_IDENTIFIER
ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE [ mytest1 ]
@name1 varchar ( 50 ),
@name2 varchar ( 50 ) output
as
select top 10 * from testtable1 order by id desc
set @name2 = @name2 + @name1
return 10
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE [ mytest1 ]
@name1 varchar ( 50 ),
@name2 varchar ( 50 ) output
as
select top 10 * from testtable1 order by id desc
set @name2 = @name2 + @name1
return 10
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO