Java-SQL存储过程

Java-SQL存储过程

存储过程是一组为了完成特定功能而预先编写的SQL语句集合,它们被存储在数据库中,可以多次调用。使用存储过程有多个优点,例如:
  1. 提高执行速度。存储过程在创建时编译,之后可以多次调用而无需重复编译,这比单独执行每次SQL语句更快。
  2. 减少网络传输。存储过程直接在数据库服务器上运行,只需传递存储过程的名称和参数,减少网络中的数据传输量。
  3. 便于维护。如果需要修改存储过程中的业务逻辑,可以直接进行更改,无需重新编译或分发整个程序。
  4. 增强安全性。可以设置存储过程的使用权限,防止未经授权的访问。
  5. 提高可扩展性。通过将数据库操作与应用程序逻辑分离,便于数据库的扩展和维护。
然而,存储过程也有一些缺点:
  1. 可移植性差。不同数据库系统中的存储过程可能不兼容,限制了应用程序的可移植性。
    调试困难。与应用程序代码相比,存储过程调试通常更复杂,需要特定的数据库管理系统支持。
  2. 重新编译问题。当存储过程使用的表结构或数据类型发生变化时,需要重新编译和测试存储过程。
  3. 不支持集群。使用存储过程可能影响数据库的水平拓展或切割,因为存储过程可能不知道数据分布在哪个数据库中。
  4. 开发工作量。对于复杂的业务逻辑,将所有代码封装在存储过程中可能导致代码难以理解和维护。
因此,虽然存储过程在某些情况下非常有用,但它们并不适用于所有情况。在选择使用存储过程时,应考虑到这些优缺点,并根据具体应用场景做出决策。

MYSQL存储过程

DELIMITER //
 
CREATE PROCEDURE 存储过程名(IN param1 INT)
BEGIN
    SELECT param1 + 10 AS result;
END //
 
DELIMITER ;

需要具有适当权限的用户才能创建存储过程。DELIMITER用于改变语句的结束标志,以便在存储过程中使用分号 (😉;在定义存储过程时,DELIMITER 被设置为 //时再结束。

SQLSERVER存储过程

CREATE PROCEDURE 存储过程名
    @Column1 NVARCHAR(50),
    @Column2 NVARCHAR(50)
AS
BEGIN
    SELECT * FROM 表名 WHERE 字段1 = @Column1 and 字段2 = @Column2
END
GO

ORACLE存储过程

create [or replace] procedure 存储过程名(param1 in type,param2 out type)
as
   变量1 类型(值范围);
   变量2 类型(值范围);
begin
   select count(*) into 变量1 from 表名 where 字段名 = param1;
   if (判断条件) then
        select 列名 into 变量2 from 表A where列名=param1;
        dbms_output.Put_line('打印信息');
   elsif (判断条件) then
        dbms_output.Put_line('打印信息');
   else
        raise 异常名(NO_DATA_FOUND);
   end if;
exception
   when others then
        rollback;
end;

in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
out 模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值