创建测试用表:
CREATE TABLE USER
(
I_ID VARCHAR(50) NOT NULL,
I_NAME VARCHAR(50) NOT NULL
);
一:无返回值的存储过程
1,建立存储过程:
CREATE OR REPLACE
PROCEDURE TESTA(
PARA1 IN VARCHAR2,
PARA2 IN VARCHAR2)
AS
BEGIN
INSERT INTO USER
(I_ID,I_NAME
) VALUES
(PARA1, PARA2
);
END TESTA;
2,Java程序:
package com.hyq.src;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");
// proc = conn.prepareCall("begin HYQ.TESTA(?,?); end;");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
}catch (SQLException ex2) {
ex2.printStackTrace();
}catch (Exception ex2) {
ex2.printStackTrace();
}finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}catch (SQLException ex1)
{
}
}
}
}
二:有返回值的存储过程(非列表)
1,建立存储过程:
CREATE OR REPLACE
PROCEDURE TESTB(
PARA1 IN VARCHAR2,
PARA2 OUT VARCHAR2)
AS
BEGIN
SELECT I_NAME INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
2,Java程序:
package com.hyq.src;
public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
// proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
proc = conn.prepareCall("begin HYQ.TESTB(?,?); end;");
proc.setString(1, "100");
proc.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
System.out.println("=testPrint=is="+testPrint);
}catch (SQLException ex2) {
ex2.printStackTrace();
}catch (Exception ex2) {
ex2.printStackTrace();
}finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}catch (SQLException ex1) {
}
}
}
}
}
三:返回列表
由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.它是把游标(可以理解为一个指针),作为一个out 参数来返回值的.所以要分两部分:
1,建一个程序包:
CREATE OR REPLACE
PACKAGE TESTPACKAGE
AS
TYPE Test_CURSOR
IS
REF
CURSOR;
END TESTPACKAGE;
2,建立存储过程:
CREATE OR REPLACE
PROCEDURE TESTC(
PARA1 IN VARCHAR2,p_CURSOR OUT TESTPACKAGE.Test_CURSOR)
IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB WHERE I_ID= PARA1;
END TESTC;
3,Java程序:
package com.hyq.src;
public class TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");
CallableStatement proc = null;
proc = conn.prepareCall("{ call hyq.testc(?,?) }");
// proc = conn.prepareCall("begin hyq.testc(?,?); end;");
proc.setString(1, "100")
proc.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(2);
while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}catch (SQLException ex2) {
ex2.printStackTrace();
}catch (Exception ex2) {
ex2.printStackTrace();
}finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}catch (SQLException ex1) {
}
}
}
}
四:调用函数返回列表
1,建一个程序包:
CREATE OR REPLACE
PACKAGE TESTPACKAGE
AS
TYPE Test_CURSOR
IS
REF
CURSOR;
END TESTPACKAGE;
2,建立函数:
CREATE OR REPLACE
FUNCTION TESTD(
PARA1 IN VARCHAR2)
RETURN TESTPACKAGE.Test_CURSOR
IS
rc TESTPACKAGE.Test_CURSOR;
BEGIN
OPEN rc FOR SELECT * FROM HYQ.TESTTB WHERE I_ID= PARA1;
return rc;
END TESTD;
3,Java程序:
package com.hyq.src;
public class TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");
CallableStatement proc = null;
proc = conn.prepareCall("{ call ? :=HYQ.TESTD(?) }");
// proc = conn.prepareCall("begin ? :=HYQ.TESTD(?); end;");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.setString(2, "100")
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}catch (SQLException ex2) {
ex2.printStackTrace();
}catch (Exception ex2) {
ex2.printStackTrace();
}finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}catch (SQLException ex1) {
}
}
}
}
文章浏览阅读225次。ctrl + - 返回上次光标处ctrl + shift + - 与上面相反。。。ctrl + shift + k 删除行option + up /down 某一行上下移动option + shift + up 往上复制当前行option + shift + down 往下复制当前行option + Shift + F 格式化..._vscodeapple 回退键
文章浏览阅读57次。一面介绍一下自己问项目经历, 聊"数据同步"接着聊上了 K8S 的项目有没有什么钻研得比较深得技术?(大佬:kubernetes, golang, prometheus, java)kubernetes 的架构是怎么样的?这个问题很大,拆成 apiserver、controller、kubelet、scheduler 讲了一下golang 与 java 的比较这个问题又很大,当时主要对比了 vm、协程支持、面向对象和泛型的区别、以及自己对各自使用场景的一些理解_java面试问文件读写
文章浏览阅读139次。KingSwap社区AMA 第6期主题:爆火的DeFi+NFT是什么?时间:2020年12月10日 20:30主讲:MalcolmHi,大家好,欢迎来到KingSwap中文社区每期的AMA,很高兴又和大家见面啦!如果只用一个词来概括 2020 年的区块链行业,这个词应该是 DeFi。而下一个关键词呢?许多人心中的答案是:NFT。不过,很自然的问题随之而来:如果 NFT 遇上 DeFi ,会碰撞出来什么花火?在 NFT 和 DeFi 的十字路口,逐渐有更多的项目浮上水面,在当下正红的 DeFi._ama详情: 1. sumswap中国社区大使和coinreaders的在线qa环节(直播过程中
文章浏览阅读250次。 http://download.csdn.net/source/2289993 下了!! 非常好! 學了很多新知識!! wcf Ria Services; MVVMlight framework; Entity framework; Terelik controls; Siliverlight 4.0; VS 2010
文章浏览阅读540次。转载自:http://blog.chinaunix.net/uid-22028566-id-3533856.html一、Recovery服务的核心install_package(升级update.zip特有) 和Recovery服务中...
文章浏览阅读2.6k次。//时间:2013-07-07//作者:shm//描述:本文主要记录了Oracle数据库的字符集问题,也涉及作为服务器操作系统的CentOS或者Windows的字符集与Oracle字符集之间的关联关系。 Oracle的字符集,这个问题的提出是因为两个原因:一是工作中遇到一个DMP文件需要恢复到数据库中去,而这个DMP文件的字符集是US7ASCII,_数据库字符集和客户端字符集
文章浏览阅读878次。有必要把以前的文章穿穿线了,希望同样的文章带给你不同的感觉…… 1、OpenCms官方网站: www.opencms.org www.alkacon.com/alkacon/en 2、了解OpenCms: OpenCms简介 OpenCms溯源 OpenCms新手上路——介绍篇 OpenCms7,我们翘首以待…… OpenCms7 al_opencms爬虫
文章浏览阅读765次,点赞56次,收藏63次。51单片机(汇编语言)中断_51单片机外部中断汇编语言
文章浏览阅读3.2k次。与使用iPhone时一样,如果您希望更改AppleWatch上的文字大小,可以在其系统设置中进行调节和更改。需要注意的是,在设置中更改文字大小之后,所有的AppleWatch自带的应用程序,例如“邮件”、“信息”等这些将以更改后的文字大小显示,但某些第三方应用程序以及表盘上的部分内容不会受到影响。以下是调整文字大小的方法:1.轻按AppleWatch的数码表冠,然后从应用程序列表中选择“设置”。2.向下滚动并选择“显示和亮度”。3.点击文字大小,向右移动滑块..._applewatch自定义表盘字体
文章浏览阅读2k次。实现手机自动备份到pandora。一,手机安装termux, pkgupgrade pkg install rsync -y二,编辑启动脚本 vi $PREFIX/et/bash.bashr 添加以下内容echo `ip addr | grep 'inet .* wlan' `sshdecho User : ..._openwrt备份手机相册
文章浏览阅读985次。无线网络 一般指的是无线局域网,由无线通讯设备 ,无线网络协议 ,无线通讯技术构成,是以太网的一种无线形式。 wifi 是一种无线通讯技术,它利用无线电波使得2台设备之间可以通讯(距离90米内)因为通过WiFi技术可以发送报文,为了使报文有意义,所以定义了一些新的无线通讯协议,为了通讯方便,所以出现了一批新的无线网络设备。 wifi 通讯使用的是无线通讯协议 802.11 ...
文章浏览阅读407次。今天要介绍的图形界面是Create Pin Blockage键功能很简单,创建一个pin blockage。Pin Blockage(引脚阻碍物)。这是..._assigniopins