【发布时间】:2020-03-02 20:52:05
【问题描述】:
我正在尝试学习 plsql,但在理解一些基本知识时遇到了困难。这是我试图解决的一个挑战。 我有两张桌子。一个保存有关车主的信息,另一个保存有关汽车的信息。我想编写一个 anonymous 块来连接这两个表,并使用基于每个所有者注册的汽车数量的 for 循环打印每个人拥有的汽车数量。此外,我想要一个区分 1 Car(单数)和 2, 3 Cars(复数)的 if 语句。
表格如下:
CREATE TABLE owners(
id_nr VARCHAR2(13) PRIMARY KEY,
f_name VARCHAR2(20),
s_name VARCHAR2(20));
CREATE TABLE cars(
reg_nr VARCHAR2(6) PRIMARY KEY,
id_nr REFERENCES owners(pnr),
model VARCHAR2(20),
year NUMBER(4),
date DATE);
结果可能如下所示:
19380321-7799,Hans,Anderson,拥有:1 辆车
19490321-7899,Mike,Erikson,拥有:2 辆车
。 . . 等等
我尝试了许多不同的方法,但每次都会遇到一些错误。 我将不胜感激任何有助于我理解它的帮助和提示。
谢谢!
【问题讨论】:
-
为什么不简单地使用带有
GROUP BY的单个 SQL 语句,这种方式比任何游标方法都更高效和可扩展。 -
循环应该永远是绝对的最后手段。 99% 的时间它们可以用简单的 jane sql 来解决(而且应该是)。
-
感谢您的回复。我同意使用 sql 更容易,并且可以在没有循环的情况下解决。但这是一个学习练习,我想知道如何在 plsql 中使用循环来完成。谢谢!
-
了解 PL/SQL 最重要的一点是,什么时候使用它有意义,什么时候不使用它。提示:这是没有意义的情况。
-
请在问题中展示并解释您尝试过的事情。请参阅 How to Ask、其他 help center 链接和投票箭头鼠标悬停文本。另外:当你得到一个你不期望/不理解的结果时,停止试图找到你的总体目标并找出你的误解是什么。--隔离第一个意外/误解的子表达式及其输入和输出并了解什么误解,错字,错误的推理等导致了它。 (调试基础。)询问一下。 minimal reproducible example
标签: oracle loops if-statement join plsql