存储过程: 返回一个结果集和两个output参数
Create PROCEDURE proTest
(
@sql varchar(8000)= ' ',
@RecordCount int = 0 output,
@PageCount int = 1 output
)as
begin
exec(@sql)
set @PageCount = 1
set @RecordCount = 100
end
public static void execute(Connection con){
try {
CallableStatement cstmt = con.prepareCall("{call proTest(?,?,?)}");
cstmt.setString(1, "select * from temp");
cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
ResultSet rs = cstmt.executeQuery();//记录集获取到后,把rs记录集循环取出后或者调用cstmt.getMoreResults()方法后,sqlserver才会处理output返回值,否则回抛出java.sql.SQLException:Output parameters have not yet been processed. Call getMoreResults()异常
while(rs.next){
system.out.println(rs.getString(1));
}
/**或者用
rs.getMoreResults()
System.out.println("PageCount : " + cstmt.getInt(2)); //不会抛出异常
System.out.println("RecordCount : " + cstmt.getInt(3));*/
}
catch (Exception e){
e.printStackTrace();
}
}
<二>java调用mysql存储过程返回多个结果集
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MainClass {
public static void main(String[] args) throws SQLException {
Connection conn = null;
CallableStatement comm = null;
ResultSet ds = null;
String commStr = "";
String content = "";
String dbUrl = "jdbc:mysql://localhost:3306/mydb1";
String theUser = "root";
String thePw = "root";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = (Connection) DriverManager.getConnection(dbUrl, theUser,
thePw);
commStr = "call my_proc('2011-08-01')";
comm = ((java.sql.Connection) conn).prepareCall(commStr);
comm.execute();
ds = comm.getResultSet();
while (ds.next()) {
if (content == "") {
content += "结果集1:\nC1\tC2\tC3";
}
content += "\n" + ds.getString(1) + "\t" + ds.getInt(2) + "\t"
+ ds.getDate(3);
}
if (comm.getMoreResults() == true) {
content += "\n\n结果集2:\nC1\tC3";
ds = comm.getResultSet();
while (ds.next()) {
content += "\n" + ds.getString(1) + "\t" + ds.getDate(3);
}
}
System.out.println(content);
} catch (Exception e) {
} finally {
if (ds != null)
ds.close();
if (comm != null)
comm.close();
if (conn != null)
conn.close();
}
}
}
结果集1:
C1 C2 C3
zhao 10 2011-08-15
zhao 2 2011-09-16
结果集2:
C1 C3
zhenlong 2011-08-05
zhenlong 2011-09-30
mysql存储过程如下:
DROP PROCEDURE IF EXISTS mydb1.my_proc;
CREATE PROCEDURE mydb1.`my_proc`(pDate Date)
BEGIN
select * from table1 where c1 = 'zhao' and C3 > pDate;
select * from table1 where c1 = 'zhenlong' and C3 > pDate;
END;
分享到:
相关推荐
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
存储过程:类似于Java里面void返回类型的方法。目的是完成一系列的数据处理。 存储函数:类似于Java里面非void返回类型的方法。目的是获得函数返回值。 --创建存储过程 CREATE OR REPLACE PROCEDURE first_proc IS...
调用java源码HashTagCounter 运行测试用例的说明 一世。 make用于编译。 ii。 以下命令用于通过4个输入文件执行您的程序。 超时10 java hashtagcounter input_1000.txt超时10 java hashtagcounter input_10000.txt...
在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native 函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer 对象作为这块...
可以执行匿名块,存储过程,从下方的窗口看到DBMS_OUTPUT的结果,如: 3. Stored Procedure Editor a) 打开存储过程编写器的几个途径: 单击总菜单栏上的第三个按钮: 点击Database - > Procedure ...
10、使用JDBC访问数据库中的存储过程,应该使用( ) 11、ServletSocket所做的工作是:( ) 三、 程序题(每题2分,有单选和多选) 1.下面的程序中哪些可以输出Hello World a. public class Hello{...
基于字节码增强技术,运行时生成代理类,快速返回mock对象,后台异步进行调用通过管理和调度线程池,将后台异步调用进行加速处理,达到一个平衡点业务执行过程需要获取mock对象的真实数据时,阻塞等待原始结果返回,...
八字java源码转基因食品 什么是 Gmock? Mocks 用于测试 API 或接口的行为,将在被测组件中使用 当您编写原型或测试时,完全依赖真实对象通常是不可行或不明智的。 模拟对象实现与真实对象相同的接口(因此它可以...
mcl和maxmax调用不同的聚类算法,而senses调用基于图的词义归纳。 有两个全局命令行参数: -i (或--input )指定输入文件的路径和-o (或--output )指定输出文件的路径。 这些参数的默认值分别为 STDIN 和 STDOUT...
简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言...
使用标志-baseStorageDir路径调用存储报告模式并读取存储目录中的所有 pom 和 ivy.xml 文件。 比较模式 使用以下标志调用比较模式: -baseStorageDir path : 代表一个存储目录 -comparisonStorageDir路径:表示第二...
│ 第51节:Varnishd命令和运行期参数.avi │ 第52节:Varnish的日志操作.avi │ 第53节:规划缓存大小和提高命中率.avi │ 第54节:性能调优和配置使用建议.avi │ 第55节:Nginx+Varnish组合应用.avi │ 第56节:...
Action是QTP组织测试用例的具体形式,拥有自己的DataTable和Object Repository,支持Input和output参数。Action可以设置为share类型的,这样可以被其他test中的Action调用(注意:QTP是不支持在一个test中调用另外一...
DIRS: Distributed Image Retrieval System ...SortDriver.java MapReduce的运行程序,计算结果输出到hdfs的/output中 辅助 imtools.py 封装了常用的操作,例如生成路径列表 HBaseConfigure.py HBase配置
基本数据类型的包装类 •八大数据类型的包装类分别为:Byte、Short、Integer、Long、Character、 Float、Double、Boolean。...函数式接口中被实现方法的第一个参数作为调用者,后面的参数全部传给该...
购卡支付响应:若支付请求返回正确响应,系统查询原订单和交易记录,返回相应的卡号和密码,以短消息形式通知用户;如出现超时或数据库操作异常,系统自动发起冲正请求 3.1.2 模块设计 描述模块设计。可以用流程图...
DBMS_OUTPUT.PUT_LINE(v_emp(200).id||' '||v_emp(200).lastname||' '||v_emp(200).salary); END; 注:1) id(索引) 的数目的限制由BINARY_INTEGER的范围决定(-2147483647<----->2147483647); 2) TABLE类型与...
1、 写存储过程,显示所指定雇员名所在的部门名和位置。 CREATE OR REPLACE PROCEDURE DeptMesg(pename emp.ename%TYPE, pdname OUT dept.dname%TYPE,ploc OUT dept.loc%TYPE) AS BEGIN SELECT dname,loc INTO pd...