【Oracle】带参数的存储过程

本文介绍了如何在Oracle数据库中创建及使用存储过程,并演示了如何设置参数的默认值。通过实例展示了存储过程的基本语法,包括创建、传参执行及默认值设定等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在参加【中原银行】的【极客大赛】,请大家支持下我的队伍,给【农夫种豆队】投上您宝贵的一票(微信,无需注册,无需填写手机号码,点击一下即可),谢谢大家;

1、创建存储过程

create procedure updatedemo  (ageparam IN number)
as
begin
update demo set age = ageparam;
commit;
end;
/

2、传参执行

begin
updatedemo(20);
end;
/

3、为存储过程设置参数的默认值

3.1创建存储过程

create or replace procedure InsertDemo(id in char,name in char default '路人',age in char default '30',sex in char) 
as
begin
insert into demo values(id,name,age,sex);
commit;
end;
/

3.2、运行该存储过程

begin
InsertDemo('5','孙尚香',null,'female');
end;
/

注意1

这里我出现了一个问题,就是我的表的字段是id,name,sex,age;但是我定义的存储过程是id,
name,age,sex;最后两个字段的位置跟表结构不一样;插入的时候,插入的核心是存储过程里的

insert into demo values(id,name,age,sex);

这句话,然后传参的顺序丝毫不会影响到insert表的顺醋,插入式,系统会将你的变量id,name
age,sex插入到字段id,name,age,sex中,这里要注意,前4个是参数,后4个是字段;

注意2

当存储过程定义了默认值后,表也定义了默认值,表的默认值优先级高于存储过程;

### 如何在 Oracle 数据库中执行带参数存储过程 #### 创建带有输入和输出参数的存储过程 创建一个具有输入(IN) 和 输出(OUT) 参数的存储过程,这允许传递数据给存储过程以及接收返回的结果。 ```sql CREATE OR REPLACE PROCEDURE example_procedure ( input_param IN VARCHAR2, output_param OUT NUMBER ) IS BEGIN -- 执行某些操作并将结果赋值给output_param SELECT COUNT(*) INTO output_param FROM employees WHERE department_name = input_param; END; / ``` #### 使用匿名PL/SQL块调用存储过程 当希望测试或直接从SQL*Plus或其他命令行工具运行时,可以通过编一个匿名PL/SQL块来实现: ```plsql DECLARE v_output NUMBER; BEGIN example_procedure('Sales', v_output); DBMS_OUTPUT.PUT_LINE('Number of Employees in Sales Department: ' || TO_CHAR(v_output)); END; / ``` 此代码定义了一个局部变量`v_output`用于保存来自存储过程的输出,并打印最终结果[^2]。 #### 应用程序层面上调用存储过程 对于Java应用来说,可以利用JDBC API中的CallableStatement接口来进行调用。下面是一个简单的例子展示如何通过Hibernate框架内的方法去调用名为`proc_stuInfo()`的存储过程并向其提供必要的参数: ```java String sql = "{call proc_stuInfo(?)}"; session.doWork(connection -> { try (CallableStatement cs = connection.prepareCall(sql)) { // 设置IN参数 cs.setString(1, "someValue"); // 如果存在OUT参数,则注册它们的数据类型 cs.registerOutParameter(2, Types.VARCHAR); // 调用存储过程 cs.execute(); // 获取并处理OUT参数 String result = cs.getString(2); System.out.println(result); } }); ``` 上述示例展示了如何设置IN参数并通过索引来获取OUT参数的值[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值