19.oracle11g中的游标

news2024/11/16 11:48:25

oracle11g中的游标

  • 一、案例引入
  • 二、什么是游标
  • 三、隐式游标
    • 1、隐式游标的属性
    • 2、创建语法
    • 3、示例
  • 四、显示游标
    • 1、显示游标的属性
    • 2、创建语法
    • 3、示例
  • 五、REF游标
    • 1、REF游标的属性
    • 2、创建语法
    • 3、示例
  • 六、循环游标
    • 1、 循环游标的作用
    • 2、用for 与 loop 创建
    • 3、示例

在这里插入图片描述

一、案例引入

假设我们有一个名为employee的表,其中存储了员工的信息,包括员工ID、姓名、部门和工资等。现在我们需要编写一个PL/SQL存储过程,用于计算每个部门的平均工资,并将结果输出到控制台。在这个业务案例中,我们可以使用游标来实现这个逻辑,因为需要对每个部门进行单独的计算并输出结果。

首先,让我们创建一个名为employee的示例表,并插入一些数据:

CREATE TABLE employee (
    employee_id NUMBER,
    employee_name VARCHAR2(100),
    department VARCHAR2(100),
    salary NUMBER
);

INSERT INTO employee (employee_id, employee_name, department, salary) VALUES (1, 'Alice', 'HR', 3000);
INSERT INTO employee (employee_id, employee_name, department, salary) VALUES (2, 'Bob', 'HR', 3500);
INSERT INTO employee (employee_id, employee_name, department, salary) VALUES (3, 'Charlie', 'IT', 4000);
INSERT INTO employee (employee_id, employee_name, department, salary) VALUES (4, 'David', 'IT', 3800);
INSERT INTO employee (employee_id, employee_name, department, salary) VALUES (5, 'Eve', 'IT', 4200);

接下来,我们可以编写一个存储过程,使用游标计算每个部门的平均工资,并将结果输出到控制台:

CREATE OR REPLACE PROCEDURE calculate_average_salary IS
  -- 声明游标
  CURSOR department_cursor IS
    SELECT department, AVG(salary) AS avg_salary
    FROM employee
    GROUP BY department;
  -- 声明游标变量
  department_name employee.department%TYPE;
  avg_salary NUMBER;
BEGIN
  -- 打开游标
  OPEN department_cursor;
  -- 循环处理结果集
  LOOP
    FETCH department_cursor INTO department_name, avg_salary;
    EXIT WHEN department_cursor%NOTFOUND;
    -- 在这里可以处理每一行数据,例如打印到控制台
    DBMS_OUTPUT.PUT_LINE('Department: ' || department_name || ', Average Salary: ' || avg_salary);
  END LOOP;
  -- 关闭游标
  CLOSE department_cursor;
END;
/

在上面的示例中,我们首先声明了一个名为department_cursor的游标,它用于查询每个部门的平均工资。然后在存储过程中打开游标,使用循环逐行从游标中获取数据,并在循环中处理每一行数据,最后关闭游标。当我们调用calculate_average_salary存储过程时,它会计算每个部门的平均工资,并将结果输出到控制台。

这个示例演示了如何使用游标在Oracle中处理业务逻辑,通过游标,我们可以更灵活地处理查询结果集中的数据,实现更复杂的数据操作逻辑。

二、什么是游标

在Oracle 11g中,游标是一种用于在PL/SQL程序中处理查询结果集的数据结构。它允许程序员在程序中对查询结果集进行逐行处理,可以用来遍历和操作查询结果集中的数据。游标可以分为隐式游标、显式游标、 REF 游标

  • 隐式游标:

    1. 隐式游标是在PL/SQL块中执行SELECT语句时自动创建和管理的,程序员无需显式声明和使用。
    2. 隐式游标的查询结果集会被自动保存在系统生成的游标中,程序员可以直接在PL/SQL块中对结果集进行处理。
    3. 通过检查隐式游标的属性可以获得最近执行的DML 语句的信息。

  • 显式游标则需要程序员显式地声明和使用,通常包括以下步骤:

    1. 声明游标:使用DECLARE语句声明游标,指定查询语句和游标的名称。
    2. 打开游标:使用OPEN语句打开游标,执行查询语句并将结果集保存在游标中。
    3. 循环处理结果集:使用FETCH语句从游标中逐行获取数据,并在循环中处理每一行数据。
    4. 关闭游标:使用CLOSE语句关闭游标,释放游标占用的资源。

  • REF 游标:REF 游标用于处理运行时才能确定的动态 SQL 查询的结果

通过游标,程序员可以更灵活地处理查询结果集中的数据,实现更复杂的数据操作逻辑。因此,游标在Oracle 11g中广泛应用于PL/SQL程序中对查询结果集进行处理。

三、隐式游标

1、隐式游标的属性

隐式游标是在PL/SQL块中执行SELECT语句时自动创建和管理的,程序员无需显式声明和使用。隐式游标的属性包括以下几个方面:

  1. %ROWCOUNT:返回最近一次执行的SQL语句所影响的行数。
  2. %FOUND:如果最近一次FETCH语句成功获取了一行数据,则返回TRUE;否则返回FALSE。
  3. %NOTFOUND:如果最近一次FETCH语句未成功获取一行数据,则返回TRUE;否则返回FALSE。
  4. %ISOPEN:如果隐式游标当前处于打开状态,则返回TRUE;否则返回FALSE。

这些属性可以在PL/SQL块中直接使用,用于判断查询结果集的状态和影响行数等信息。例如,可以使用%ROWCOUNT获取受影响的行数,使用%FOUND%NOTFOUND判断是否成功获取了数据行,使用%ISOPEN判断游标是否处于打开状态。

2、创建语法

隐式游标的语法非常简单,它可以在PL/SQL的FOR循环语句中使用SELECT语句来隐式创建和使用游标。FOR循环语句的语法如下:

FOR loop_index IN select_statement LOOP
  -- 在这里处理每一行数据
END LOOP;

其中,loop_index是循环索引变量,它会在每次循环迭代中自动赋值为查询结果集中的一行数据。select_statement是SELECT语句,它用于查询数据并返回结果集。

3、示例

下面是一个简单的示例,演示了如何在PL/SQL中使用隐式游标:

CREATE OR REPLACE PROCEDURE calculate_order_total_amount IS
BEGIN
  -- 使用隐式游标,在FOR循环中迭代处理查询结果
  FOR order_rec IN (SELECT customer_id, SUM(order_amount) AS total_amount FROM orders GROUP BY customer_id) LOOP
    -- 在这里可以处理每一行数据,例如打印到控制台
    DBMS_OUTPUT.PUT_LINE('Customer ID: ' || order_rec.customer_id || ', Total Amount: ' || order_rec.total_amount);
  END LOOP;
END;
/

在上面的示例中,我们使用了一个隐式游标来处理查询结果集中的数据。在FOR循环中,我们使用了一个SELECT语句来查询所有订单的总金额,并按客户ID分组。在循环中,PL/SQL引擎会自动创建一个隐式游标来执行SELECT语句,并迭代处理查询结果集中的数据。在循环中,我们可以使用order_rec变量来访问每一行数据的字段值,并对数据进行处理。

需要注意的是,隐式游标只能用于一次性使用的简单查询,如果需要对结果集进行多次迭代或进行复杂的数据操作,建议使用显式游标来实现。

四、显示游标

当使用显式游标时,可以通过游标属性来访问有关游标的信息,包括游标的状态、当前行的数据等。下面是关于显式游标的属性、创建语法和应用场景的详细介绍,包含具体代码示例。

1、显示游标的属性

显式游标具有以下几个常用的属性:

  • %FOUND:如果最近的FETCH语句成功获取了一行数据,则为TRUE;否则为FALSE。
  • %NOTFOUND:如果最近的FETCH语句未能成功获取一行数据,则为TRUE;否则为FALSE。
  • %ROWCOUNT:返回最近的OPEN、FETCH或CLOSE语句所涉及的行数。
  • %ISOPEN:如果游标是打开状态,则为TRUE;否则为FALSE。

这些属性可以帮助开发人员在处理游标时了解游标的状态和当前行的数据。

2、创建语法

创建显式游标的语法如下:

DECLARE
  CURSOR cursor_name IS
    select_statement;

其中,cursor_name 是游标的名称,select_statement 是 SELECT 语句,用于定义游标要查询的数据集。

3、示例

显式游标适用于以下场景:

  • 需要对查询结果集进行多次迭代处理。
  • 需要在不同的地方打开和关闭游标,或者在不同的地方获取游标的状态信息。
  • 需要在游标的生命周期中手动控制游标的状态。
  1. 下面是一个具体的代码示例,演示了显式游标的属性、创建语法和应用场景:

    CREATE OR REPLACE PROCEDURE process_employee_salary IS
      -- 声明显式游标
      CURSOR emp_cursor IS
        SELECT employee_id, employee_name, salary FROM employees;
      emp_rec emp_cursor%ROWTYPE; -- 声明一个记录类型的变量,用于存储游标返回的数据
    
    BEGIN
      -- 打开游标
      OPEN emp_cursor;
    
      -- 获取游标的状态信息
      IF emp_cursor%ISOPEN THEN
        DBMS_OUTPUT.PUT_LINE('Cursor is open');
      END IF;
    
      -- 迭代处理查询结果集
      LOOP
        FETCH emp_cursor INTO emp_rec; -- 获取游标返回的数据
        EXIT WHEN emp_cursor%NOTFOUND; -- 当没有更多数据时退出循环
        -- 处理数据,例如打印到控制台
        DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp_rec.employee_id || ', Name: ' || emp_rec.employee_name || ', Salary: ' || emp_rec.salary);
      END LOOP;
    
      -- 获取行数
      DBMS_OUTPUT.PUT_LINE('Total rows processed: ' || emp_cursor%ROWCOUNT);
    
      -- 关闭游标
      CLOSE emp_cursor;
    
      -- 获取游标的状态信息
      IF NOT emp_cursor%ISOPEN THEN
        DBMS_OUTPUT.PUT_LINE('Cursor is closed');
      END IF;
    
    END;
    /
    

    在上面的示例中,我们创建了一个名为 emp_cursor 的显式游标,用于查询员工表中的数据。在过程中,我们打开了游标,使用 FETCH 语句迭代处理查询结果集,获取了游标的状态信息,获取了行数,并在最后关闭了游标。这个示例展示了显式游标的属性、创建语法和应用场景。

  2. 带参数的显示游标案例
    以下是一个带参数的游标示例,其中我们使用参数来过滤查询结果集:

    -- 创建带参数的游标
    DECLARE
      CURSOR student_cursor (grade_param NUMBER) IS
        SELECT xh, xm
        FROM student
        WHERE grade = grade_param;
      xh_val student.xh%TYPE;
      xm_val student.xm%TYPE;
      grade_val NUMBER := 1; -- 设置参数的默认值
    BEGIN
      -- 打开游标
      OPEN student_cursor(grade_val);
      
      -- 迭代处理查询结果集
      LOOP
        FETCH student_cursor INTO xh_val, xm_val;
        EXIT WHEN student_cursor%NOTFOUND;
        
        -- 处理查询结果,例如打印到控制台
        DBMS_OUTPUT.PUT_LINE('Student ID: ' || xh_val || ', Name: ' || xm_val);
      END LOOP;
      
      -- 关闭游标
      CLOSE student_cursor;
    END;
    /
    

    在上面的示例中,我们创建了一个带参数的游标 student_cursor,该游标接受一个名为 grade_param 的参数,并用于过滤查询结果集。我们在声明游标时指定了参数,并在打开游标时传入参数的值。这样就可以根据参数的值来过滤查询结果集,实现了带参数的游标功能。

五、REF游标

在Oracle数据库中,REF游标是一种特殊类型的游标,用于处理具有引用类型的数据。以下是关于REF游标的属性、创建语法和应用场景的详细介绍,包含具体代码示例。

1、REF游标的属性

REF游标具有以下常用属性:

  • %FOUND:如果最近的FETCH语句成功获取了一行数据,则为TRUE;否则为FALSE。
  • %NOTFOUND:如果最近的FETCH语句未能成功获取一行数据,则为TRUE;否则为FALSE。
  • %ROWCOUNT:返回最近的OPEN、FETCH或CLOSE语句所涉及的行数。
  • %ISOPEN:如果游标是打开状态,则为TRUE;否则为FALSE。

这些属性与普通显式游标的属性相似,用于获取游标的状态信息。

2、创建语法

创建REF游标的语法如下:

DECLARE
  CURSOR cursor_name IS
    SELECT REF(column_name) FROM table_name;

其中,cursor_name 是游标的名称,column_name 是包含引用类型数据的列名,table_name 是包含引用类型数据的表名。

3、示例

REF游标适用于以下场景:

  • 处理包含引用类型数据的表,例如使用对象类型或嵌套表类型。
  • 需要在游标中返回引用类型数据的引用。
  • 需要在游标的生命周期中手动控制游标的状态。

下面是一个具体的代码示例,演示了REF游标的属性、创建语法和应用场景:

CREATE OR REPLACE PROCEDURE process_ref_cursor IS
  -- 声明REF游标
  CURSOR ref_cursor IS
    SELECT REF(e) FROM employees e;
  emp_ref employees%ROWTYPE; -- 声明一个记录类型的变量,用于存储引用类型数据的引用

BEGIN
  -- 打开游标
  OPEN ref_cursor;

  -- 获取游标的状态信息
  IF ref_cursor%ISOPEN THEN
    DBMS_OUTPUT.PUT_LINE('REF Cursor is open');
  END IF;

  -- 迭代处理查询结果集
  LOOP
    FETCH ref_cursor INTO emp_ref; -- 获取游标返回的引用数据
    EXIT WHEN ref_cursor%NOTFOUND; -- 当没有更多数据时退出循环
    -- 处理引用数据,例如打印到控制台
    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_ref.last_name);
  END LOOP;

  -- 获取行数
  DBMS_OUTPUT.PUT_LINE('Total rows processed: ' || ref_cursor%ROWCOUNT);

  -- 关闭游标
  CLOSE ref_cursor;

  -- 获取游标的状态信息
  IF NOT ref_cursor%ISOPEN THEN
    DBMS_OUTPUT.PUT_LINE('REF Cursor is closed');
  END IF;

END;
/

在上面的示例中,我们创建了一个名为 ref_cursor 的REF游标,用于查询包含引用类型数据的员工表。在过程中,我们打开了REF游标,使用 FETCH 语句迭代处理查询结果集,获取了游标的状态信息,获取了行数,并在最后关闭了游标。这个示例展示了REF游标的属性、创建语法和应用场景。

六、循环游标

循环游标是一种在数据库中遍历结果集的方法。它可以用于迭代处理查询结果,对每一行数据执行特定的操作。以下是关于循环游标的详细介绍:

1、 循环游标的作用

循环游标的作用是遍历查询结果集中的数据,并对每一行数据执行特定的操作。这种遍历方式允许开发人员逐行处理结果集,执行复杂的业务逻辑,或者将结果集中的数据进行进一步处理。

  • 数据处理:循环游标常用于对查询结果进行逐行处理,例如计算、数据转换等。
  • 数据校验:可以使用循环游标来逐行校验查询结果,确保数据的完整性和准确性。
  • 数据导出:通过循环游标,可以逐行将查询结果导出到其他数据源或文件中。

2、用for 与 loop 创建

使用循环游标,有两种常见的创建语法,一种是使用 FOR 循环,另一种是使用 LOOP 循环。

  • 使用 FOR 循环创建循环游标的语法如下所示:

    DECLARE
      variable1 datatype;
      variable2 datatype;
    BEGIN
      FOR rec IN (SELECT column1, column2, ... FROM table_name WHERE condition) LOOP
        variable1 := rec.column1;
        variable2 := rec.column2;
        -- 在此处处理查询结果
      END LOOP;
    END;
    /
    
  • 使用 LOOP 循环创建循环游标的语法如下所示:

    DECLARE
      CURSOR cursor_name IS
        SELECT column1, column2, ...
        FROM table_name
        WHERE condition;
      variable1 datatype;
      variable2 datatype;
    BEGIN
      OPEN cursor_name;
      LOOP
        FETCH cursor_name INTO variable1, variable2, ...;
        EXIT WHEN cursor_name%NOTFOUND;
        -- 在此处处理查询结果
      END LOOP;
      CLOSE cursor_name;
    END;
    /
    

3、示例

以下是一个具体的示例代码,演示了使用 FOR 循环和 LOOP 循环创建循环游标,并遍历查询结果集:

  • 使用 FOR 循环:

    DECLARE
      xh_val student.xh%TYPE;
      xm_val student.xm%TYPE;
    BEGIN
      FOR rec IN (SELECT xh, xm FROM student) LOOP
        xh_val := rec.xh;
        xm_val := rec.xm;
        DBMS_OUTPUT.PUT_LINE('Student ID: ' || xh_val || ', Name: ' || xm_val);
      END LOOP;
    END;
    /
    

    这段代码是一个 PL/SQL 块,用于遍历名为 student 的表中的数据,并输出学生的学号和姓名到控制台。具体解释如下:

    • DECLARE:声明部分,用于声明变量和游标。
    • xh_val student.xh%TYPE;:声明一个变量 xh_val,其类型与表 student 中的 xh 字段相同。
    • xm_val student.xm%TYPE;:声明一个变量 xm_val,其类型与表 student 中的 xm 字段相同。
    • BEGIN:开始部分,标志着 PL/SQL 块的开始。
    • FOR rec IN (SELECT xh, xm FROM student) LOOP:使用 FOR 循环创建一个游标 rec,并执行 SELECT 语句以从表 student 中获取学号和姓名。
    • xh_val := rec.xh;:将当前行的学号赋值给变量 xh_val
    • xm_val := rec.xm;:将当前行的姓名赋值给变量 xm_val
    • DBMS_OUTPUT.PUT_LINE('Student ID: ' || xh_val || ', Name: ' || xm_val);:输出当前行的学号和姓名到控制台。
    • END LOOP;:结束 FOR 循环。
    • END;:PL/SQL 块的结束。
  • 使用 LOOP 循环:

    DECLARE
      CURSOR student_cursor IS
        SELECT xh, xm
        FROM student;
      xh_val student.xh%TYPE;
      xm_val student.xm%TYPE;
    BEGIN
      OPEN student_cursor;
      LOOP
        FETCH student_cursor INTO xh_val, xm_val;
        EXIT WHEN student_cursor%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Student ID: ' || xh_val || ', Name: ' || xm_val);
      END LOOP;
      CLOSE student_cursor;
    END;
    /
    

    这段代码是一个 PL/SQL 块,用于遍历名为 student 的表中的数据,并输出学生的学号和姓名到控制台。具体解释如下:

    • DECLARE:声明部分,用于声明变量和游标。
    • CURSOR student_cursor IS SELECT xh, xm FROM student;:声明一个名为 student_cursor 的游标,用于从表 student 中选择学号和姓名。
    • xh_val student.xh%TYPE;:声明一个变量 xh_val,其类型与表 student 中的 xh 字段相同。
    • xm_val student.xm%TYPE;:声明一个变量 xm_val,其类型与表 student 中的 xm 字段相同。
    • BEGIN:开始部分,标志着 PL/SQL 块的开始。
    • OPEN student_cursor;:打开游标 student_cursor
    • LOOP:开始一个循环,用于逐行处理查询结果。
    • FETCH student_cursor INTO xh_val, xm_val;:从游标中获取下一行数据,并将学号和姓名赋值给对应的变量。
    • EXIT WHEN student_cursor%NOTFOUND;:如果游标中没有更多的数据,则退出循环。
    • DBMS_OUTPUT.PUT_LINE('Student ID: ' || xh_val || ', Name: ' || xm_val);:输出当前行的学号和姓名到控制台。
    • END LOOP;:结束循环。
    • CLOSE student_cursor;:关闭游标 student_cursor
    • END;:PL/SQL 块的结束。

    在上面的示例中,我们演示了使用 FOR 循环和 LOOP 循环创循环游标,并遍历查询结果集,将学生的学号和姓名逐行输出到控制台。

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

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

相关文章

渗透测试信息搜集

注:太简陋了,不忍直视 渗透测试信息收集 黑盒测试:给域名 灰盒测试:给域名、账户(或密码) 白盒测试:给域名、账户、密码 授权书 对安全公司进行授权 攻防演习 是对个人进行授权 渗透测试:&#xff0…

【2023.11.24】Mybatis基本连接语法学习➹

基本配置 1.如果使用Maven管理项目&#xff0c;需要在pom.xml中配置依赖。 2.安装Mybatis-3.5.7.jar包 3.进行XML配置&#xff1a;这里将文件命名为mybatis-config.xml 配置数据库连接XML文件 <?xml version"1.0" encoding"UTF-8" ?> <!DO…

【华为数通HCIP | 网络工程师】821-IGP高频题、易错题之OSPF(5)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

周报6_YMK

周报6 本周主要在看代码&#xff1a;看Medusa头的代码发现不是很了解base_model那部分&#xff0c;所以又去看了llama2的代码和一些相关博客。 重写了一部分佛山中医学院项目的代码&#xff0c;更规范一些。 调研CosmoFlow&#xff0c;是一个深度学习预测宇宙参数的模型&…

面试题:Java 对象不使用时,为什么要赋值 null ?

文章目录 前言示例代码运行时栈典型的运行时栈Java的栈优化提醒 GC一瞥提醒 JVM的“BUG”总结 前言 最近&#xff0c;许多Java开发者都在讨论说&#xff0c;“不使用的对象应手动赋值为null“ 这句话&#xff0c;而且好多开发者一直信奉着这句话&#xff1b;问其原因&#xff…

python命令行交互 引导用户选择宠物

字多不看&#xff0c;直接体验 代码 以下代码将在命令行中&#xff0c;引导用户选择一个或者多个宠物&#xff0c;并反馈用户选择的宠物 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/22 15:19 file: 在命令行中引导用户…

实例分割12篇顶会论文及代码合集,含2023最新

同学们&#xff0c;你们觉得视觉经典四个任务中哪个最难&#xff1f;我个人觉得是实例分割。 因为它既具备语义分割的特点&#xff0c;需要做到像素层面上的分类&#xff0c;也具备目标检测的一部分特点&#xff0c;即需要定位出不同实例&#xff0c;即使它们是同一种类。 但…

C# 时间计算(二)

目录 五、时间比较 六、时间数据转换 七、时间间隔计算 八、获取网络时间 九、时间戳 十、时区时间 结束 概述 在 C# 中&#xff0c;DateTime 用于处理日期和时间的内置类&#xff0c;其值范围为 00&#xff1a;00&#xff1a;00 (午夜) &#xff0c; 0001年1月1日&…

高压放大器应用领域分享:关于电磁波的极化,看这篇文章就够了!

谈到电磁波&#xff0c;除了频率和幅度之外&#xff0c;还有一个比较重要的方面就是&#xff1a;极化。极化&#xff0c;就是指波振动的平面&#xff0c;电磁波的传播是由相互垂直的电场和磁场产生的。因此存在电场和磁场两个相互垂直的振荡平面&#xff0c;所以呢&#xff0c;…

力扣 3. 无重复字符的最长子串

题目 题解 方法 public static int lengthOfLongestSubstring(String s) {HashSet<Character> charSet new HashSet<Character>();int i 0,l0,max0;for (int j 0; j < s.length(); j) {while (charSet.contains(s.charAt(j))) {charSet.remove(s.charAt(l…

一个干净的前端架构是什么样的?

干净的前端架构,围绕这个话题有很多原则&#xff1a; SOLID、KISS&#xff08;保持简单明了&#xff09;、DRY&#xff08;不要重复自己&#xff09;、DDD&#xff08;领域驱动设计&#xff09;等等。 为什么需要前端架构&#xff1f; 功能性和非功能性的要求不仅应该在后端…

如何处理git多分支

本篇文章主要处理以下两种多分支问题 如何将自己在本地的修改上传到一个新的Git分支&#xff08;比如用于测试&#xff0c;不合并进main分支&#xff09;&#xff1f;如何在一个新的本地仓库拉取一个项目的非main分支&#xff0c;并处理他们关联关系&#xff1f; 1. 将自己在…

智能条件单具体操作步骤,解放你投资双手!

一般我们说到量化交易都觉得很困难&#xff0c;写策略难&#xff0c;看python难&#xff0c;不会使用程序难&#xff0c;电脑交易不方便难&#xff0c;今天我们来看看手机电脑都可以使用的量化基础条件单的操作。迈入量化第一步&#xff0c;条件单的使用。 很多投资者不清楚条件…

C语言——输入一个4位正整数,输出其逆数。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j 0;int a1,a2,a3,a4;printf("输入一个4位正整数&#xff1a;\n");scanf("%d",&i);a1 i/1000; a2 i/100%10; a3 i/10%10; a4 i%10; printf("千位a1%d,百位a…

SQL 语句 UNION 连接,查询字段数量必须一致

MySQL&#xff1a;The used SELECT statements have a different number of columns 执行SQL报错&#xff1a;The used SELECT statements have a different number of columns 以上翻译&#xff1a;使用的SELECT语句具有不同数量的列 原因&#xff1a;我们在 SQL 语句中使用…

Java 简单配置环境变量,切换多个jdk版本

文章目录 前言一、jdk下载二、配置环境变量三、查看jdk版本四、配置多个jdk五、切换jdk 前言 windows 配置jdk环境变量&#xff0c;如果项目没有规定使用的jdk版本的话&#xff0c;建议使用jdk8&#xff0c;这是最常用也是最稳定的版本 一、jdk下载 https://www.oracle.com/ja…

APP软件线上排查方法

在线上环境中排查APP软件的问题是一项关键任务&#xff0c;需要使用一系列方法和工具来识别、定位和解决问题。以下是一些建议的排查方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.监控和日志…

38 关于 redo 日志

前言 undo 和 redo 是在 mysql 中 事务, 或者 异常恢复 的场景下面 经常会看到的两个概念 这里 来看一下 redo, redo 主要是用于 异常恢复 的场景下面 测试表结构如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NULL…

2023年【山东省安全员C证】考试试卷及山东省安全员C证考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年【山东省安全员C证】考试试卷及山东省安全员C证考试试题&#xff0c;包含山东省安全员C证考试试卷答案和解析及山东省安全员C证考试试题练习。安全生产模拟考试一点通结合国家山东省安全员C证考试最新大纲及山东…

测绘资质工程测量乙级资质办理条件

新测绘资质分为10个专业&#xff1a; 1.大地测量 2.测绘航空摄影 3.摄影测量与遥感 4.工程测量 5.海洋测绘 6.界线与不动产测绘 7.地理信息系统工程 8.地图编制 9.导航电子地图制作 10.互联网地图服务。 新《测绘资质管理办法》和《测绘资质分类分级标准》&#xff…