PL/SQL数据修改:增删字段与BLOB/CLOB操作(哈理工教程)

需积分: 6 49 下载量 77 浏览量 更新于2024-08-15 收藏 1.49MB PPT 举报
本章节主要探讨了Oracle数据库中的PL/SQL编程语言,特别是在数据修改场景下的操作。PL/SQL(Procedural Language/SQL)是Oracle数据库提供的一种过程化编程语言,它允许开发者编写包含SQL语句的程序,以实现更高效、复杂的数据库操作和管理。 首先,章节介绍了数据修改类的几个关键操作,如APPEND(追加)、COPY(复制)、ERASE(清除)、LOADFROMFILE(从文件加载数据)、TRIM(修剪)以及WRITE(写入)。这些操作涉及到对数据库中的数据进行增删改查,其中LOB(Large Object)类型,包括BLOB(二进制大对象)和CLOB(字符大对象),是处理大型文本和文件的重要工具。BLOB和CLOB支持不同的指针位移单位(字节或字符),并允许使用EMPTY_CLOB()和EMPTY_BLOB()初始化LOB列。 此外,章节还涉及到了读取和处理文件的函数,如GETLENGTH(获取长度)、INSTR(查找子串)、READ(读取数据)和SUBSTR(子串提取),以及针对BFILE(二进制文件类型)特有的函数,如FILEOPEN(打开文件)、FILECLOSE(关闭文件)等。这些操作在修改员工履历等涉及文件操作的场景中非常实用。 PL/SQL程序块是核心概念,其结构包括可选的声明部分(声明变量和常量)、必需的执行部分(PL/SQL语句)和可选的异常处理部分(处理程序运行时可能遇到的错误)。PL/SQL遵循严格的语法规则,如标识符命名规则、运算符使用、数据类型和作用域等。程序块可以嵌套,并且支持注释来提高代码可读性。 在实际操作中,PL/SQL通过整合到Oracle Server和应用开发工具中,使得分布式计算成为可能,提高了程序的性能和可移植性。例如,可以将一组SQL语句封装在PL/SQL块中,减少网络传输,从而加快数据处理速度。 在修改雇员表emp的具体示例中,如EXA_09_49.SQL 和 EXA_09_50.SQL,展示了如何使用这些PL/SQL命令来扩展表结构并更新特定记录的数据,而EXA_09_51.SQL 则展示了检索CLOB数据的不同方法。 总结来说,本章节深入剖析了PL/SQL在数据修改方面的应用,包括使用LOB处理大型数据、文件操作以及处理异常的程序结构,这些都是Oracle数据库管理员和开发人员必备的技能。通过理解和掌握这些知识,用户能够有效地管理和操作Oracle数据库中的数据。

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtWidgets> #include <QResizeEvent> //绘图区域大小变化事件 #include <QDebug> #include <QThread> #include <QTimer> #include <QVector> #include <QRandomGenerator> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->plot->setOpenGl(true); ui->plot->setNoAntialiasingOnDrag(true); CreateChart(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::CreateChart() { ui->plot->addGraph(); ui->plot->graph(0)->setPen(QPen(QColor(100,149,237))); mData = ui->plot->graph(0)->data()->coreData(); ui->plot->xAxis2->setVisible(true); ui->plot->xAxis2->setTickLabels(false); ui->plot->yAxis2->setVisible(true); ui->plot->yAxis2->setTickLabels(false); connect(ui->plot->xAxis, SIGNAL(rangeChanged(QCPRange)), ui->plot->xAxis2, SLOT(setRange(QCPRange))); connect(ui->plot->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->plot->yAxis2, SLOT(setRange(QCPRange))); ui->plot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom|QCP::iSelectPlottables); ui->plot->yAxis->setRange(-1.5,1.5); ui->plot->xAxis->setRange(0,50); ui->plot->yAxis->setLabel("数据"); ui->plot->xAxis->setLabel("个数"); for (int i = 0; i < 50; i++) { mXDataTol.append(i); mYDataTol.append(QRandomGenerator::global()->bounded(1.00)); } ui->plot->graph(0)->setData(mXDataTol,mYDataTol,true); ui->plot->replot(); }这是我的全部代码,系统报错:terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc请帮我修改一下代码,我不知道到底哪里出了错

2023-06-10 上传