`

ORACLE存储过程警惕(删除记录)

阅读更多

错误

create or replace procedure del_team
(
  userid in t_user.id%type,
  teamid out t_user.teamid%type

)
as
begin
  select t.teamid into teamid from t_user t where t.id=userid;
  delete from t_user t where t.id=userid;
  delete from t_gps t where t.userid=userid;
commit;
end;

删除某条记录,会删除表的全部数据。

问题是变量命名问题,如下解决(切记变量命名,不与系统字段或是变量以及其他关键字冲突):

-------------------------------------------------------------------------------------------------------

正确

create or replace procedure del_team
(
  v_userid in t_user.id%type,
  v_teamid out t_user.teamid%type

)
as
begin
  select t.teamid into v_teamid from t_user t where t.id=v_userid;
  delete from t_user t where t.id=v_userid;
  delete from t_gps t where t.userid=v_userid;
commit;
end;

 

分享到:
评论

相关推荐

    非常规删除ORACLE数据文件解决办法

    在Oracle数据库环境中,数据文件是存储用户数据和数据库结构的核心组件。当这些文件因为意外或非常规操作被删除时,可能会导致严重的数据丢失问题。本文将深入探讨如何应对"非常规删除ORACLE数据文件"的问题,并提供...

    oracle SQL性能优化

    使用绑定变量、游标或存储过程等技术可以减少SQL语句的解析和执行次数,从而提高整体性能。 #### 五、调整SQL*Plus和Pro*C的参数 SQL*Plus和Pro*C等工具中的CARRAYSIZE参数决定了每次从数据库读取的记录数量。...

    Mybatis批量删除数据操作方法

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis使得开发者能够将注意力集中在使用SQL来构建自己的系统上,而无需关注...

    SQL注入技术参考文档

    例如,创建一个存储查询结果的临时表,然后查询这个临时表来获取信息,最后删除临时表以掩盖痕迹。 6. **创建数据库账号**: 在某些情况下,攻击者可能会尝试创建新的数据库账号,赋予高级权限,以便长期访问和...

    SQL-ConsoleQuery:尝试从控制台获取SQL输入

    - **循环与条件判断**:通过存储过程或自定义脚本实现复杂的逻辑。 9. **与其他工具的集成** - SQL Console常与版本控制系统(如Git)、自动化工具(如Ansible)或持续集成/持续部署(CI/CD)流程结合使用。 ...

    (重要)AIX command 使用总结.txt

    AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q ...

Global site tag (gtag.js) - Google Analytics