Oracle IF/ELSE语句

Joh*_*nes 0 sql oracle oracle12c

我正在使用Oracle SQL Developer在Oracle12c中编写一个过程.我需要做的是检查表格以查看是否存在记录.如果是,那我需要编辑它.如果没有,那么我需要添加它.

所以,我的"伪代码"逻辑看起来像这样:

If (Select * from MyTable where MyValue = 0) has more than one record, then
  This will be an EDIT line of code
else
  This will be an ADD line of code
end
Run Code Online (Sandbox Code Playgroud)

我将如何在Oracle SQL Developer中编写它?

编辑:

目前我的代码看起来像这样,我需要添加一块来更新记录.如果Line_ID存在,我需要更新记录.如果没有,我需要添加它.

create or replace PROCEDURE CST_WRITE_FEEDBACK (
v_AuditID IN NUMBER,
v_BenefitID IN NUMBER,
v_Network1 IN VarChar,
v_Network2 IN VarChar,
v_Network3 IN VarChar,
v_Network4 IN VarChar,
v_Issue1 IN NUMBER,
v_Issue2 IN NUMBER,
v_Issue3 IN NUMBER,
v_Issue4 IN NUMBER,
v_Resolution1 IN NUMBER,
v_Resolution2 IN NUMBER,
v_Resolution3 IN NUMBER,
v_Resolution4 IN NUMBER,
v_Status IN NUMBER,
v_Comment IN VarChar,
v_LineID IN NUMBER,
v_EmpID IN NUMBER
)
AS 
BEGIN

IF 

  INSERT INTO F_AUDIT_LINE ("AUDIT_ID", "BENEFIT_ID", "NETWORK", "NETWORK2", "NETWORK3", "NETWORK4", 
  "ISSUE_ID", "ISSUE_ID2", "ISSUE_ID3", "ISSUE_ID4",
  "RESOLUTION_ID", "RESOLUTION_ID2", "RESOLUTION_ID3", "RESOLUTION_ID4", 
  "LINE_STATUS")
  VALUES (v_AuditID, v_BenefitID, v_Network1, v_Network2, v_Network3, v_Network4,
  v_Issue1, v_Issue2, v_Issue3, v_Issue4,
  v_Resolution1, v_Resolution2, v_Resolution3, v_Resolution4,
  v_Status
  );

END CST_WRITE_FEEDBACK;
Run Code Online (Sandbox Code Playgroud)

Kac*_*per 5

declare
  i number;
begin
  Select count(*) into i from MyTable where MyValue = 0;
If (i > 0)  then
  update ...
else
  insert ...
end;
/
Run Code Online (Sandbox Code Playgroud)

但正如评论中所述,您可以通过以下方式获得:

merge into MyTable m
using (select v_AuditID, v_BenefitID, v_Network1, v_Network2, _Network3, _Network4, 
              v_Issue1, v_Issue2, v_Issue3, v_Issue4, 
              v_Resolution1, v_Resolution2, v_Resolution3, v_Resolution4, v_Status 
       from dual) d
on (d.MyValue = m.Myvalue)
when matched then 
  update set ..
when not matched then 
  insert ...
Run Code Online (Sandbox Code Playgroud)

如果您提供程序代码,我们可以为您扩展命令.

  • @JohnnyBones这不是代码编写服务.除了Kacper的答案之外,还有很多关于在互联网上合并的有用信息,例如[here](https://oracle-base.com/articles/9i/merge-statement).为什么不给自己编写合并声明,然后在遇到问题时寻求帮助? (5认同)
  • @JohnnyBones - 我错过了你的观点.如果有的话,这使得Boneist的言论更加有效.`MERGE`是SQL标准,它不是Oracle专有的东西.并且确切地说,更新或插入需要什么,具体取决于行是否存在或不存在.而且它很容易理解 - 非常直观的语法.因此,我同意与Boneist 100%同意并为您提出相同的问题,在您将我/我们指向您的个人资料后更是如此. (2认同)