[转]Java调用SQL Server的存储过程详解-调用带有输出参数的存储过程

Java调用存储过程(带输出参数)      上星期老师布置实验,题目中有一个要求用Java来调用存储过程。为了完成作业,在网上差了好些资料还看过视频,现在终于有点眉目了。以为自己找的有点辛苦,想必其他人也会如此,因此想把自己编程的经验和大家一块分享。我也是初次使用java调用存储过程,有什么不对的地方还请大家指教,我在此谢过了。java 编程工具使用myeclipse数据库使用sql server 2005存储过程 阅读详情

3、使用 JDBC 驱动程序调用此类存储过程时,必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 OUT 参数的 call 转义序列的语法如下所示:

{call procedure-name[([parameter][,[parameter]]...)]} 

    构造 call 转义序列时,请使用 ?(问号)字符来指定 OUT 参数。此字符充当要从该存储过程返回的参数值的占位符。要为 OUT 参数指定值,必须在运行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定各参数的数据类型。

    使用 registerOutParameter 方法为 OUT 参数指定的值必须是 Java.sql.Types 所包含的 JDBC 数据类型之一,而它又被映射成本地 SQL Server 数据类型之一。有关 JDBC 和 SQL Server 数据类型的详细信息,请参阅了解 JDBC 驱动程序数据类型。

    当您对于 OUT 参数向 registerOutParameter 方法传递一个值时,不仅必须指定要用于此参数的数据类型,而且必须在存储过程中指定此参数的序号位置或此参数的名称。例如,如果存储过程包含单个 OUT 参数,则其序数值为 1;如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。
作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:    根据指定的整数 IN 参数 (employeeID),该存储过程也返回单个整数 OUT 参数 (managerID)。根据 HumanResources.Employee 表中包含的 EmployeeID,OUT 参数中返回的值为 ManagerID。

在下面的实例中,将向此函数传递 AdventureWorks 示例数据库的打开连接,然后使用 execute 方法调用 GetImmediateManager 存储过程:
Java code:

public static void executeStoredProcedure(Connection con) {
   try {
      CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
      cstmt.setInt(1, 5);
      cstmt.registerOutParameter(2, Java.sql.Types.INTEGER);
      cstmt.execute();
      System.out.println("MANAGER ID: " + cstmt.getInt(2));
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}
    本示例使用序号位置来标识参数。或者,也可以使用参数的名称(而非其序号位置)来标识此参数。下面的代码示例修改了上一个示例,以说明如何在 Java 应用程序中使用命名参数。请注意,这些参数名称对应于存储过程的定义中的参数名称:
SQL code CREATE PROCEDURE GetImmediateManager
   @employeeID INT,
   @managerID INT OUTPUT
AS
BEGIN
   SELECT @managerID = ManagerID
   FROM HumanResources.Employee
   WHERE EmployeeID = @employeeID
END

    存储过程可能返回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver 遵循 JDBC 3.0 规范,此规范规定在检索 OUT 参数之前应检索多个结果集和更新计数。也就是说,应用程序应先检索所有 ResultSet 对象和更新计数,然后使用 CallableStatement.getter 方法检索 OUT 参数。否则,当检索 OUT 参数时,尚未检索的 ResultSet 对象和更新计数将丢失。

转自:http://www.cn-java.com/www1/?action-viewnews-itemid-55626

SQL Server学习:Java调用SQL Server存储过程(Spring方式) Java代码 —— 测试类代码: public class SpringInvokeSP { public static void main(String[] args) { String driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://192.16 阅读详情

相关推荐

ibatis与存储过程(带输出参数的存储过程)

  全部是针对Microsoft SQL Server 2000的Stored Procedure的例子:参照《iBATIS in Action》书写:1.   max_in_exampleStored Procedure: CREATE PROCEDURE [dbo].[max_in_e

fy_kenny的专栏 1万+

JDBC调用SQL SERVER存储过程获取返回值

1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: 以下是引用片段: {call procedure-name}   作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: 以下是引用片段: CREATE PROCEDURE GetContactFormalNames   AS   BEGIN    SELECT TOP 10 Title +

weixin_43828846的博客 1890

SQL Server学习:Java调用SQL Server存储过程(JDBC方式)

Java代码: public class invokeSP { public static void main(String[] args) { String driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://192.168.0.3:1433;Da

Chen_yu_ting的专栏 1934

Java调用SQL存储过程 输入输出参数

1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:SQL code : CREATE PROCEDURE GetContact

kaka200877的专栏 3374

SQL Server中存储过程的创建与调用指南

SQL Server中的存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中并编译后执行。它既可以包含无参数的简单操作,也能处理复杂的业务逻辑和数据操作。与单次执行的SQL语句相比,存储过程能够提供更高的执行效率和模块化设计,便于维护和重用。在SQL Server中,存储过程是一组为了完成特定功能的SQL语句集。创建存储过程的语法以关键字开始,以GO或分号结束,以标记命令的结束。语法的基本结构如下:...ASBEGIN-- SQL语句和逻辑END;在这个结构中,

weixin_36303305的博客 1104

企业IT运维实录:批量部署银河麒麟V10-SP1,Ghost镜像与UKey激活实战

本文详细介绍了企业级银河麒麟V10-SP1操作系统的批量部署全流程,包括标准化镜像制作、自动化封装技术、网络化部署方案及UKey集群激活方案。通过实战案例和技术要点解析,帮助企业IT运维团队大幅提升部署效率,确保系统安全与稳定性。

weixin_30729609的博客 387

java调用sql server存储过程_Java调用SQL Server存储过程

1、调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/@Name nvarchar(50)Asbeginselect Contact.Id,Contact.Name,Phone,Email,QQ,GroupName from Contact,ContactGroupwhere Cont...

weixin_42499681的博客 2024

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 918

[转]Java调用SQL Server的存储过程详解-调用带有输入参数的存储过程

2、调用带有输入参数的存储过程 使用 JDBC 驱动程序调用带参数的存储过程时,必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 IN 参数的 call 转义序列的语法如下所示: {call procedure-name[([parameter][,[parameter]]...)]} 构造 call 转义序

642

基于微信小程序的智能门禁管理系统的设计与实现(文章+源码)

基于微信小程序门禁管理小程序,该系统支持用户注册登录、查阅新闻动态、提交开门申请和发布留言等功能,同时管理员可以进行用户管理、新闻信息管理、门禁审批管理和留言管理等操作。该系统将采用IDEA开发工具、SSM框架和MYSQL数据库等相关技术,实现用户登录注册、个人信息管理、门禁申请提交、管理员审核等功能。该系统的实现,可以有效提高门禁管理的效率和便利性,同时也具有较强的可扩展性和可维护性。本研究对于智能门禁管理系统的设计和实现具有一定的参考价值。

u011779145的博客 1399

Paho Asynchronous MQTT C Client Library--MQTTAsync API

异步MQTT 客户端库for C

yoyo勰的博客 1264

java调用sql server存储过程_Java调用SQL Server的存储过程详解(转)

1使用不带参数的存储过程使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示:以下是引用片段:{callprocedure-name}作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:以下是引用片段:CREATEPROCEDUREGetContactForm...

weixin_35682097的博客 317

UDS诊断ISO14229新手入门篇

这个命令的格式稍微复杂一点。sub-function = 0x06 用于读取某个 DTC 及其相关的环境数据,此时 parameter 为 4 个 byte,前三个 byte 用于标识我们要读取的 DTC,第四个 byte 用于标识要读取的环境数据的范围,UDS 规定使用 FF 来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括 DTC 状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此 DTC 产生时的测量数据。

weixin_45387165的博客 1973

java调用Sql Servlet存储过程详解(转载)

java调用Sql Servlet存储过程详解 1使用不带参数的存储过程   使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示:   以下是引用片段:{call procedure-name}  作为实例,在 SQL Server 2005 A

herosen的专栏 2622

【VTKExamples::PolyData】第十六期 GradientFilter

本文分享VTK样例GradientFilter,并解析接口vtkGradientFilter & vtkAssignAttribute,希望对各位小伙伴有所帮助!

qq_40041064的博客 319

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 564

Java调用SQL Server的存储过程详解

1、使用不带参数的存储过程 {call procedure-name}   作为实例,在SQL Server 2005 AdventureWorks示例数据库中创建以下存储过程: CREATE PROCEDURE GetContactFormalNames    AS BEGIN SELECT TOP 10 Tit

小桥 615

二、CANdelaStudio入门-版本介绍

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的各个版本,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YOCANdelaStudio——诊断需求定义工具,诊断协议开发软件 ①用户以模板概念为导向

诊断协议那些事儿's blog 1308

java 调用sql函数_Java中调用SQL Server存储过程详解

本文作者介绍了通过Java如何去调用SQL Server的存储过程,详解了5种不同的存储。详细请看下文1、使用不带参数的存储过程使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示:{call procedure-name}作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下...

weixin_42356378的博客 574

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java调用sql server存储过程_Java调用SQL Server的存储过程详解

1、使用不带参数的存储过程{callprocedure-name}作为实例,在SQLServer 2005AdventureWorks示例数据库中创建以下存储过程:CREATEPROCEDUREGetContactFormalNamesASBEGINSELECTTOP10Title+''+FirstName+''+LastNameASFormalNameF...

weixin_32842805的博客 235

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java调用sql server存储过程

使用java调用带有输出参数的存储过程 本例存储过程的作用为:查询用户输入的ip地址所在的位置信息(国家,省份,城市) USE [databaseName] GO /****** Object: StoredProcedure [dbo].[procedureName] Script Date: 12/27/2019 01:31:46 ******/ SET ANSI_NULLS ON G...

mengqingming1的博客 1185

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java sql server 存储过程_Java调用SQL Server的存储过程详解

1使用不带参数的存储过程使用JDBC驱动程序调用不带参数的存储过程时,必须使用callSQL转义序列。不带参数的call转义序列的语法如下所示:{callprocedure-name}作为实例,在SQLServer2005AdventureWorks示例数据库中创建以下存储过程:CREATEPROCEDUREGetContactFormalNamesASBEGIN...

weixin_42515181的博客 286

【转】 Java调用SQL存储过程 输入输出参数

1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: SQL code : CREATE PROCEDURE GetC...

binglimeng8155的博客 209
上一篇: [转]Java调用SQL Server的存储过程详解-调用带有输入参数的存储过程
下一篇: [转]Java调用SQL Server的存储过程详解-调用带有返回状态的存储过程
mxbin2008
博客等级 码龄19年 16粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值