博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]JDBC基础-用SQL语句创建存储过程
阅读量:2449 次
发布时间:2019-05-10

本文共 1986 字,大约阅读时间需要 6 分钟。

JDBC基础-用SQL语句创建存储过程
本节例示一个不带参数的简单存储过程。多数存储过程的功能比本例复杂多了,但这里主要说明存储过程的一些基本要点。如前面所述,不同DBMS定义存储过程 的语法是不同的。例如,有些DBMS使用begin . . . end或其他关键字指明存储过程定义的开始和结束。在有些DBMS中,下面的SQL语句可创建一个存储过程:
create procedure SHOW_SUPPLIERS as select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME from SUPPLIERS, COFFEES where SUPPLIERS.SUP_ID = COFFEES.SUP_ID order by SUP_NAME

下面的代码将SQL语句放到一个字符串中,然后赋给变量createProcedure以备后用:

String createProcedure = "create procedure SHOW_SUPPLIERS " + 			 "as " + 			 "select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME " + 			 "from SUPPLIERS, COFFEES " + 			 "where SUPPLIERS.SUP_ID = COFFEES.SUP_ID " + 			 "order by SUP_NAME";

下面的代码段使用Connection对象con来创建Statement对象,用于把创建存储过程的SQL语句发送给数据库:

Statement stmt = con.createStatement(); stmt.executeUpdate(createProcedure);

存储过程SHOW_SUPPLIERS将作为一个可调用的数据库对象在数据库中编译并存储,调用时就像调用其他方法一样。

从JDBC调用存储过程

JDBC允许在用Java编写的程序中调用存储过程。第一步 是创建一个CallableStatement对象。就像Statement和PreparedStatement对象一样,利用一个打开的 Connection对象即可完成创建。CallableStatement对象包含了存储过程的一个调用;但它不包含存储过程本身。下面的第一行代码使 用连接con创建了存储过程SHOW_SUPPLIERS的一个调用。花括号内的那部分就是存储过程的转义语法。当驱动程序碰到“{call SHOW_SUPPLIERS}”时,它将把这个转义语法转换成数据库使用的本地SQL,以调用名为SHOW_SUPPLIERS的存储过程。

CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}"); ResultSet rs = cs.executeQuery();

执行后结果集rs的内容如下:

SUP_NAME			COF_NAME ----------------		----------------------- Acme, Inc.			Colombian Acme, Inc.			Colombian_Decaf Superior Coffee			French_Roast Superior Coffee			French_Roast_Decaf The High Ground			Espresso

注意,用于执行cs的方法是executeQuery,因为 cs调用的存储过程包含一个查询,执行后产生一个结果集。如果存储过程包含一条更新或一条DLL语句,那就要使用executeUpdate方法。但有时 一个存储过程包含多条SQL语句,因而它产生的不只是一个结果集、不只是一个更新计数或产生一些结果集和更新计数的组合。这样就有多个结果集,这时就应该 使用execute方法来执行CallableStatement。

CallableStatement类是 PreparedStatement的子类,因此CallableStatement对象可与PreparedStatement对象一样带有输入参数。 此外,CallableStatement对象还可带输出参数或输入/输出参数。INOUT参数和execute方法很少使用。要获取更详细信息,请参考 “使用Java进行JDBC数据库访问”。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-132041/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-132041/

你可能感兴趣的文章
构建自定义JavaScript Scrollspy导航
查看>>
laravel/dusk_Laravel Dusk简介
查看>>
slim3框架 教程_SLIM 3入门,PHP微框架
查看>>
谷歌中阻止冒泡在火狐中失效_如何在Google表格中转换货币
查看>>
wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
查看>>
如何使Linux控制台更易于Linux新手使用
查看>>
如何在Apple Watch上启用和使用缩放
查看>>
初学者:如何在Outlook 2010中向其他人分配任务
查看>>
windows 10 修复_如何修复Windows的10大烦恼
查看>>
系统映像恢复 进不了系统_如何从Windows系统映像中恢复特定文件
查看>>
如何学习Photoshop的极客指南,第2部分:面板
查看>>
如何在iPhone上将实时照片转换为视频或GIF
查看>>
xbmc_从iPhone或iPod Touch控制XBMC
查看>>
编程爱好者网站_读书爱好者的最佳免费网站
查看>>
为什么运行微波会杀死Wi-Fi连接?
查看>>
outlook转发邮件步骤_Microsoft Outlook中的快速步骤指南
查看>>
macos 托盘文件预览_如何在Ubuntu的文件管理器中快速预览文件(如macOS中的“ Quick Look”)...
查看>>
macos 快速启动启动台_无法获取macOS通知? 这是解决方法(无需重新启动)
查看>>
为什么您可能不应该将您的企业网站运出家门
查看>>
如何在Android上使用Amazon Underground免费获取大量应用内购买
查看>>