使用全部更新多个列



我正在尝试更新所有列。构造更新语句的 set 部分,然后将其传递给 for all 语句。设置部分中可以有多个列。但它抛出错误:"缺少等号"。还有其他方法可以解决这个问题吗?

DECLARE
    V_COL_LIST VARCHAR2(4000);
    type emp_t
    IS
    TABLE OF NUMBER;
    emp_id emp_t;
BEGIN
    SELECT employee_id bulk collect
    INTO emp_id
    FROM employees
    WHERE department_id=10;
    V_COL_LIST:='SALARY=EMPLOYEE_ID';
    FORALL INDX IN 1..emp_id.count
    UPDATE EMPLOYEES SET V_COL_LIST
    WHERE EMPLOYEE_ID=emp_id(indx);
END;
无法

识别您使用的语法。您可以使用动态 SQL 来执行此操作。但是,我不明白你为什么要SALARY=EMPLOYEE_ID将薪水设置为employee_id.请检查您的逻辑。

使用动态 SQL:

DECLARE
    V_COL_LIST VARCHAR2(4000);
    type emp_t
    IS
    TABLE OF NUMBER;
    emp_id emp_t;
BEGIN
    SELECT employee_id bulk collect
    INTO emp_id
    FROM employees
    WHERE department_id=10;
    V_COL_LIST:='SALARY=1000';
    FORALL INDX IN 1..emp_id.count
      execute immediate 'UPDATE EMPLOYEES SET ' || V_COL_LIST
    ||' WHERE EMPLOYEE_ID=:1' using emp_id(indx);
END;
/

如果您知道哪些列要设置为什么,只需您进行普通更新-

DECLARE
    type emp_t
    IS
    TABLE OF NUMBER;
    emp_id emp_t;
BEGIN
    SELECT employee_id bulk collect
    INTO emp_id
    FROM employees
    WHERE department_id=10;
    FORALL INDX IN 1..emp_id.count
      UPDATE EMPLOYEES SET COL1 = 'ABC', COL2 = 'DEF'
       WHERE EMPLOYEE_ID = emp_id(indx);
END;
/

相关内容

  • 没有找到相关文章

最新更新