使用 if 语句 PL/SQL 更新表

发布于 2024-10-08 23:22:52 字数 410 浏览 2 评论 0原文

我正在尝试做这样的事情,但在将其放入 Oracle 编码中时遇到困难。

BEGIN
IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)
THEN
 UPDATE task_table SET complete_date = //somedate WHERE task_id = 1;
ELSE
 UPDATE task_table SET complete_date = NULL;
END IF;
END;

但这是行不通的。我也尝试过

IF EXISTS(SELECT complete_date FROM task_table WHERE task_id = 1)

但没有运气。

I am trying to do something like this but am having trouble putting it into oracle coding.

BEGIN
IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)
THEN
 UPDATE task_table SET complete_date = //somedate WHERE task_id = 1;
ELSE
 UPDATE task_table SET complete_date = NULL;
END IF;
END;

But this does not work. I also tried

IF EXISTS(SELECT complete_date FROM task_table WHERE task_id = 1)

with no luck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情愿 2024-10-15 23:22:52

如果您的实际逻辑与上面的逻辑类似,我认为您不需要程序块。

假设这是您的任务:

“如果id的complete_date值为
1为NULL,用XXX更新。否则将其设置为 null”。

您可以运行 ...

Update task_table
  set complete_date = nvl2(complete_date,NULL, <**your date**>)
  where task_id = 1;

这只会用您的新日期更新complete_date 为 null 的记录。

I don't think you'd need the procedural block if your actual logic is like the one above.

Assuming this is your task:

"if the value of complete_date for id
1 is NULL, update it with XXX. Otherwise set it to null".

You could just run ...

Update task_table
  set complete_date = nvl2(complete_date,NULL, <**your date**>)
  where task_id = 1;

This will only update those records where the complete_date is null with your new date.

最终幸福 2024-10-15 23:22:52

这部分的目的是什么?

IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)

是查找是否存在complete_date为null且task_id = 1的行?

或者是检查是否没有task_id = 1的行?

What is the intention of this part?

IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)

Is it to find if there are rows where complete_date is null and task_id = 1?

Or is it to check if there are no rows where task_id = 1?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文