后台代码更新语句要先查询再更新吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后台代码更新语句要先查询再更新吗?相关的知识,希望对你有一定的参考价值。

参考技术A 你只对个别记录更新,必须要使用where子句限定更新范围,否则所有记录都会被更改。
比如:
UPDATE mem SET pswd=@klj WHERE user=xxx;

当然,出现错误不一定是这个引起的,因为不要子句也是正确的语法,你还是要输出exception的值,看看到底是什么问题

如何在更新语句中使用 if 条件

【中文标题】如何在更新语句中使用 if 条件【英文标题】:how to use if contions in update statement 【发布时间】:2021-08-03 11:01:05 【问题描述】:

我需要在更新查询中使用 if 条件,请检查并让我知道下面的更新语句 可以正常工作吗?

if opt=1 then
update EOD SET  flag='Y' where Step_name='STEP_1'
else if
ip opt=2 then
update EOD SET  flag='Y' where Step_name='STEP_2'
end if;

'''

【问题讨论】:

什么是opt?这真的是一个 PL/SQL 问题,还是可以/应该在单个 insert 语句(纯 SQL,没有 PL/SQL 代码)中完成的事情? opt--为入参 【参考方案1】:

你可以用 where 子句来做到这一点。

update EOD SET  flag='Y' where (Step_name=STEP_1 and opt=1) or(Step_name=STEP_2 and opt=2);

要按照您的意图在 PL/SQL 中执行此操作,而不是 else if,您需要使用 elseif

if opt=1 then
update EOD SET  flag='Y' where Step_name=STEP_1;

elseif opt=2 then
update EOD SET  flag='Y' where Step_name=STEP_2;
end if;

【讨论】:

opt不是列名,是输入参数【参考方案2】:
CREATE
    OR REPLACE PROCEDURE archana (opt IN NUMBER) IS
BEGIN
    IF opt = 1 THEN
        UPDATE EOD SET FLAG = 'Y' WHERE STEP_NAME = 'STEP_1';
    ELSIF opt = 2 THEN
        UPDATE EOD SET FLAG = 'Y' WHERE STEP_NAME = 'STEP_2';
    ELSE
        dbms_output.put_line('ERROR');
    END IF;
END;

opt 被接受为输入参数,然后根据该值执行相应的更新查询。 P.S:请在本论坛发帖之前测试您的代码,而不是询问它是否可以工作。如果它不起作用,那么许多窥视者会在这里提供帮助。

【讨论】:

您确定您的代码正常工作吗?你只有 1 个 END IF 和 2 个 IF! 我现在已将 ELSE IF 编辑为 ELSIF。我希望 ELSIF 能够在没有多个 ENDIF 的情况下完成这项工作。

以上是关于后台代码更新语句要先查询再更新吗?的主要内容,如果未能解决你的问题,请参考以下文章

关于plsql!!!

MySQL的更新语句update中可以用子查询吗?

sql server有批量插入和批量更新的sql语句吗

旧访问更新声明

一个事务中先插入数据,然后再查询所有数据,能查到刚才的记录吗

ibatis配置文件中update语句的写法?