java调用存储过程
在做java调用sqlserver存储过程时遇到了各种各样的问题,不过在不懈的努力之下这些问题还是得以解决了。今天总结一下遇到的问题以及解决的方法。
首先调用存储过程的方法大家都很清楚:
String sql="{call dbo.proc_getdata(?)}";//存储过程名以及参数,?为参数占位符。
CallableStatement cstmt=connection.prepareCall(sql);
cstmt.setInt(1, 1); ResultSet rs=cstmt.executeQuery();//返回结果集
while(rs.next()){ }
如果这里的dbo.proc_getdata存储过程没有用到临时表或是表变量,获得想要的结果集没有任何问题。但是存储过程里如果用到了临时表或者是表变量,
那么结果就有点出乎预料了。rs总是没有返回值。这是为什么呢?虽然直接也没有找到原因,但是找到了解决的办法。
首先在存储过程的开始和结尾分别加上set nocount on和set nocount off。然后用到临时表的地方使用自动执行sql语句的方式:
if (object_id('dbo.proc_getdata', 'P') is not null)
drop proc dbo.proc_getdata
go
create proc dbo.proc_getdata (
@No int --输入参数
)
as
begin
set nocount on IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID = OBJECT_ID('TEMPDB..#Student'))
DROP TABLE #Student --临时表
create TABLE #Student (
NOCD int NOT NULL ,
Name nvarchar(32) NOT NULL ,
PRIMARY KEY(NOCD)
) declare @sql1 VARCHAR(8000)
set @sql1=' '
set @sql1='
insert into #Student
select * from students'
exec(@sql1)
set nocount off
end
java调用存储过程的更多相关文章
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...
- Oracle数据库基本操作 (五) —— 使用java调用存储过程
一.环境准备 登录Oracle数据库scott账号,利用emp进行操作. 1.创建 proc_getyearsal 存储过程 -- 获取指定员工年薪 create or replace procedu ...
- java调用存储过程(stored procedures)的HelloWorld例子
1.java调用存储过程(stored procedures)的HelloWorld程序 有点数据 库基础的人都知道.存储过程(stored procedures)和java没什么关系.它是一段纯粹的 ...
- java调用存储过程和函数
以对表test进行增,删,改,查进行说明:1.新建表test create table TEST ( TID NUMBER not null, TNAME VARCHAR2(32), TCODE VA ...
- 【转】java调用存储过程和函数
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- java 调用存储过程
1.java 中调用pl/sql 中的存储过程 call 存储过程的名称(参数名称,参数名称) 在service 层中调用 存储过程 String sql=" call proc_ ...
- java调用存储过程、存储函数
需要用到的接口 接口 CallableStatement JDK文档对改接口的说明: public interface CallableStatement extends PreparedStatem ...
- Java调用存储过程小结
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...
- Java 调用存储过程、函数
一.Java调用存储Oracle存储过程 测试用表: --创建用户表 create table USERINFO ( username ) not null, password ) not null ...
随机推荐
- Win7 单机Spark和PySpark安装
欢呼一下先.软件环境菜鸟的我终于把单机Spark 和 Pyspark 安装成功了.加油加油!!! 1. 安装方法参考: 已安装Pycharm 和 Intellij IDEA. win7 PySpark ...
- 62.Android之各分辨率定义的图片规格
转载:http://www.nljb.net/default/Android%E4%B9%8B%E5%90%84%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%9A%E4%B9%8 ...
- 虚拟机克隆后找不到eth0
使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70-persis ...
- poj2318
题意:把一个矩形划分成n部分,再给出一堆点,求每个部分内落入了多少点 sol attempt1:暴力 注意每个polygon中的点要按笔画的顺序排列好.还有就是有的点可能落在了upper or low ...
- Markdown 语法说明
Markdown 语法说明 (简体中文版) / (点击查看快速入门) 概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文 ...
- java里面时间差比较
currentTime.before(this.getLastActivateTime(time))//返回true 或者false public Date getLastActivateTime(t ...
- cookielib和urllib2模块相结合模拟网站登录
1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...
- django入门记录 2
1. 创建一个app, python manage.py startapp appname 2. 设计model,在appname/目录下编辑好model 3. 检测model的修改,python ...
- jboss wildfly 外网访问
在standalone.xml中: 找到下面三行,看到是要访问public(8080端口的)和management的interface,将interface中的127.0.0.1改为0.0.0.0即可 ...
- Linux以外的开源操作系统大汇总
开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用.编译和发布.自由和开放源代码软件中最著名的是Linux,它是一种类Unix的操作系统.Linux可安装在各种计算机硬件设备中,比如手机.平板 ...