【业余小练习】交互式网格自定义增删改(进行中)

news2024/11/14 15:11:19

学习SQL和PLISQL数据类型的区别和应用场景

Oracle plsql 基础篇1 数据类型以及流程控制_bb_tarek的博客-CSDN博客https://blog.csdn.net/bb_tarek/article/details/17555713?ops_request_misc=&request_id=&biz_id=102&utm_term=plsql%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-17555713.142%5Ev92%5Econtrol&spm=1018.2226.3001.4187

plsql基础学习--二、PLSQL类型_plsql long类型_罗小树的博客-CSDN博客https://blog.csdn.net/u010999809/article/details/82421830

PL/SL存储过程调用和函数

交互式网格自定义增删改

行选中

var map =  new Map();

map.set('P6_ROW_ID','ID');
utils.set(this.data,map);

console.log('行选中:' + $v('P6_ROW_ID'));

 【错误记录】oracleapex 出现 1 个错误 在用户开始更新过程以后, 数据库中数据的当前版本已经更改

在用pl/sql控制交互式网格实现自定义增删改出现问题如下

 百思不得其解,后来蒋老师点出来是数据库数据未同步,需要手动刷新数据库更新数据,

 最后成功实现pl/sql自定义交互式网格增删改!

更改的内容:

 代码如下:

begin
    case :APEX$ROW_STATUS
    when 'C' then
        insert into ROLE_INTRODUCTION2 ( name,gender,age,address,skill )
        values ( :NAME, :GENDER, :AGE, :ADDRESS, :SKILL )
        returning id into :ID;
    when 'U' then
        update ROLE_INTRODUCTION2
           set name  = :NAME,
               gender = :GENDER,
               age = :AGE,
               address = :ADDRESS,
               skill = :SKILL 
         where id  = :ID;
    when 'D' then
        delete ROLE_INTRODUCTION2
         where id = :ID;
    end case;
    
    -- WRITE_LOG( 'P6', 'debug' , 'APEX$ROW_STATUS' || :APEX$ROW_STATUS , -1 , 1 );
end;


更多细节

实现功能以后还需要更多细节:

自定义增删改的按钮/设置超链接在对应数据上(点击用户名就可以进行修改之类的);

增删改之后要能自动刷新数据库(java中是查询数据库,apex应该也同理)。

以及条件校验,比如

性别只能是“男”“女”/或者做成下拉框;

年龄不得大于130、不得小于0……

创建值列表

为了方便进行选值,创建了值列表,可以选择工作状态——未开始,进行中,已完成,已逾期

共享组件→值列表→创建→定义名称→类型 Static→输入显示值和返回值→创建值列表

 批量删除相关代码

if (utils.checkNull($v('P6_ROW_ID'))) {
    alert('请选择要删除数据!')
    return false;
} else {
    if (confirm('确定要删除选中的数据吗?')) {
        return true;
    }
    else {
        return false;
    }
}

设置按钮

页设计器→Region Body→创建新按钮→标识 按钮名 

在布局中设置列和列跨距

 设置服务器端代码

declare
    V_COUNT number(18) := 0;
 begin
    --删除用户数据
    DELETE ROLE_INTRODUCTION2 where ID IN(SELECT * FROM TABLE(SPLITSTR(:P6_ROW_ID,',')));
    V_COUNT := SQL%ROWCOUNT;
    APEX_UTIL.SET_SESSION_STATE('P6_ROW_COUNT',V_COUNT);    
 end;

返回值可以自己创建

Region Body→右键 创建项→标识 名称(自定义)类型(隐藏)

创建列表

 要在交互式网格中新增,需要跳转一个新增表单

先设计一个表单,设置校验(数据不为空)

if ($v('P3_NAME').length == 0 || $v('P3_GENDER').length == 0 || $v('P3_AGE').length == 0 || $v('P3_ADDRESS').length == 0 || $v('P3_SKILL').length == 0 ) {
    alert('数据未填完');
    return false;
}

修改服务器端代码

declare
    v_row_count number(20) := 0;

begin    
    update ROLE_INTRODUCTION2 set NAME =: P3_NAME,GENDER =:P3_GENDER,AGE =:P3_AGE,ADDRESS =:P3_ADDRESS,SKILL =:P3_SKILL where ID =:P3_ID;
    v_row_count := SQL%ROWCOUNT;
    apex_util.set_session_state('P3_ROW_COUNT',v_row_count);
end;

【错误记录】ORA-01008: 并非所有变量都已绑定

会冒出来警告

  • ORA-01008: 并非所有变量都已绑定

 “ORA-01008: 不是所有变量都绑定”错误通常出现在执行预编译的SQL语句时。该错误表示在SQL语句中找不到所有需要绑定的变量。这通常是因为绑定变量的数量与SQL语句中的变量数量不匹配,或者在执行SQL语句之前未正确绑定变量。

解决方法:

1. 检查绑定变量的数量和顺序

2. 检查是否正确绑定了所有变量

3. 检查是否使用了正确的变量名

记得输入的值和返回值

 

新增服务器端代码

declare
    v_row_count number(10) := 0;

begin    
    INSERT INTO ROLE_INTRODUCTION2(NAME,GENDER,AGE,ADDRESS,SKILL)VALUES(:P3_NAME,:P3_GENDER,:P3_AGE,:P3_ADDRESS,:P3_SKILL);
    v_row_count := SQL%ROWCOUNT;
    apex_util.set_session_state('P3_ROW_COUNT',v_row_count);
end;

新增有表单出来了,但是新增失败了

 啊???

先去数据库查看数据有没有写入

数据未写入

去还有一件事(老爹附体),在P3 的表单页中,没有输入值和返回值

  创建的查询语句也有问题

【错误记录】ORA-02014

  • ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE

正常处理方法和步骤:

1. 首先,需要确保执行的查询是正确的。

2. 然后,可以考虑替换查询中的UNION、GROUP BY或DISTINCT子句以使用JOIN,以避免ORA-02014错误的发生。

3. 也可以尝试在查询的SELECT子句中进行更改,以允许对类似视图的功能Table的更新

4. 最后,应该停用VIEW并尝试避免更新或检查对视图功能表的影响。

 问题是代码根本找不到QAQ

小技巧:可以点击右侧小图标,里面有出错位置

终于找到了,在p6的“处理”→test-增删改交互式网格数据

重新写了一个 改过来就好了

SELECT ID,NAME,GENDER,AGE,ADDRESS,SKILL
FROM ROLE_INTRODUCTION2

小结:

  • 一定要细心,每一个不起眼的小细节都有可能影响最终结果,所以在编码开发中一定要注意细节;
  • 遇到前台没有返回数据,先去数据库查看是否成功存入,如果数据库查不到数据,说明一开始存储就有问题,如果数据库有数据就说明是前端传入有误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/855898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unlikely argument type for equals(): String seems to be unrelated to T

Unlikely argument type for equals(): String seems to be unrelated to Integer Unlikely argument type for equals(): String seems to be unrelated to Date 多余代码

java代码审计9之XXE

文章目录 1、简介2、 java XXE审计函数3、漏洞3.1、正常的业务3.2、有回显的情况3.3、无回显的情况3.4、修复 之前的文章, php代码审计9之XXE 1、简介 XXE(XML外部实体注⼊,XML External Entity) ,在应⽤程序解析XML输⼊时&…

【雕爷学编程】Arduino动手做(200)---WS2812B幻彩LED灯带4

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

linux系统虚拟主机开启支持SourceGuardian(sg11)加密组件

注意:sg11我司只支持linux系统虚拟主机自主安装。支持php5.3及以上版本。 1、登陆主机控制面板,找到【远程文件下载】这个功能。 2、远程下载文件填写http://download.myhostadmin.net/vps/sg11_for_linux.zip 下载保存的路径填写/others/ 3、点击控制…

golang 自定义exporter - 端口连接数 portConnCount_exporter

需求: 1、计算当前6379 、3306 服务的连接数 2、可prometheus 语法查询 下面代码可直接使用: 注: 1、windows 与linux的区分 第38行代码 localAddr : fields[1] //windows为fields[1] , linux为fields[3] 2、如需求 增加/修改/删除…

PHP实现在线进制转换器,10进制,2、4、8、16、32进制转换

1.接口文档 2.laravel实现代码 /*** 进制转换计算器* return \Illuminate\Http\JsonResponse*/public function binaryConvertCal(){$ten $this->request(ten);$two $this->request(two);$four $this->request(four);$eight $this->request(eight);$sixteen …

JavaScript基础 第二天

1. 运算符 2. 语句 一.运算符 1.赋值运算符 2.一元运算符 3.比较运算符 4.逻辑运算符 5.运算符优先级 1.1 赋值运算符 概念:对变量进行赋值的运算符 赋值运算符: - * / % 1.2 一元运算符 可以根据表达式的个数,分为一…

数据结构【第4章】——栈与队列

队列是只允许在一端进行插入操作、而在另-端进行删除操作的线性表。 栈 栈与队列:栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)&…

提升客户满意度的创意项目管理软件推荐!

发现功能强大的工作管理软件,让创意大放异彩。将您团队的愿景变成引人注目的项目。 一、交付总是令人印象深刻的工作 Zoho Projects的创意项目管理软件可帮助您和您的团队在一个地方监督多个项目。使用我们的内置管理工具和模板,花更少的时间在管理上&a…

postman如何添加token

参考博客:https://blog.csdn.net/Mrbignose/article/details/107237581 1.添加token: 2.设置token: 3.发送时携带token:

【JavaEE】懒人的福音-MyBatis框架—介绍、搭建环境以及初步感受

【JavaEE】MyBatis框架要点总结(1) 文章目录 【JavaEE】MyBatis框架要点总结(1)1. MyBatis是什么?2. 搭建MyBatis的开发环境2.0 MySQL建库建表2.1 新项目添加MyBatis框架2.2 设置MyBatis的配置2.2.1 设置数据库的连接信…

图像的平移变换之c++实现(qt + 不调包)

1.基本原理 设dx为水平偏移量&#xff0c;dy为垂直偏移量&#xff0c;则平移变换的坐标映射关系为下公式&#xff0c;图像平移一般有两种方式。 1.不改变图像大小的平移&#xff08;一旦平移&#xff0c;相应内容被截掉&#xff09; 1&#xff09;当dx > width、dx < -wi…

【云原生】Kubernetes节点亲和性分配 Pod

目录 1 给节点添加标签 2 根据选择节点标签指派 pod 到指定节点[nodeSelector] 3 根据节点名称指派 pod 到指定节点[nodeName] 4 根据 亲和性和反亲和性 指派 pod 到指定节点 5 节点亲和性权重 6 pod 间亲和性和反亲和性及权重 7 污点和容忍度 8 Pod 拓扑分布约束 官方…

flinksql sink to sr often fail because of nullpoint

flinksql or DS sink to starrocks often fail because of nullpoint flink sql 和 flink ds sink starrocks 经常报NullpointException重新编译代码 并上传到flink 集群 验证&#xff0c;有效 flink sql 和 flink ds sink starrocks 经常报NullpointException 使用flink-sta…

【EI复现】售电市场环境下电力用户选择售电公司行为研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

AWS——04篇(AWS之Amazon S3(云中可扩展存储)-02——EC2访问S3存储桶)

AWS——04篇&#xff08;AWS之Amazon S3&#xff08;云中可扩展存储&#xff09;-02——EC2访问S3存储桶&#xff09; 1. 前言2. 创建EC2实例 S3存储桶3. 创建IAM角色4. 修改EC2的IAM 角色5. 连接EC2查看效果5.1 连接EC25.2 简单测试5.2.1 查看桶内存储情况5.2.2 复制本地文件…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

Android安卓实战项目(11)—每个步骤带有动画演示功能的线上运动APP,可计算每日运动卡路里(源码在文末)

Android安卓实战项目&#xff08;11&#xff09;—每个步骤带有动画演示功能的线上运动APP&#xff0c;可计算每日运动卡路里&#xff08;源码在文末&#x1f415;&#x1f415;&#x1f415;&#xff09; 【bilibili演示】 https://www.bilibili.com/video/BV1bk4y1g7Wo/?sh…

Vue day01

Vue 1.简介&#xff1a; ​ Vue是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层&#xff0c;不仅容易上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的工…

taro Swiper组件--异形滚动

效果 <SwiperindicatorDots{false}previousMargin50pxnextMargin50pxautoplay{false}interval100onChange{onChangeSwiper} >{[1,2,3].map((item, index) > {return (<SwiperItemkey{item-${index}}><View className{demo-item ${currentIndex index ? ac…