【问题标题】:Create a PL/SQL block to display all the department names from the Department table using cursors. The department names should be displayed in创建一个 PL/SQL 块以使用游标显示 Department 表中的所有部门名称。部门名称应显示在
【发布时间】:2022-03-27 17:53:21
【问题描述】:

创建一个 PL/SQL 块以使用光标显示部门表中的所有部门名称。部门名称应按升序显示。

列名 1 - DEPARTMENT_ID NUMBER(5) 主键
列名 2 - DEPARTMENT_NAME VARCHAR(25) NOT NULL
列名 3 - LOCATION_ID VARCHAR(15)

代码
设置服务器输出;
声明
柜台号码;
v_dept 部门.部门名称%type;
光标 c_dept 是从部门中选择部门名称;
开始
dbms_output.put_line('部门名称是:');
打开 c_dept;
循环
FETCH c_dept INTO v_dept;
当 c_dept%notfound 时退出;
dbms_output.put_line(v_dept);
结束循环;
关闭 c_dept;
结束;

样本输出:
部门名称是:
管理员
发展

注意:在编译和评估之前使用“/”终止查询

错误:

Failed Test
 Test Case 2

 Summary of tests
+------------------------------+
| 2 tests run / 1 test passed  |
+------------------------------+

【问题讨论】:

  • PL/SQL 代码被注释(所以它根本没有执行)。您发布的输出是 SELECT 语句,执行了两次。
  • 它会自动重复,因此要知道发生了什么我已经注释了过程块并运行了简单的 SQL 查询
  • 那里是否有正斜杠 (/)?在 SQL*Plus 中,它重新执行最后一条语句。
  • 还是同样的问题
  • 那就不知道了。您发布的 PL/SQL 代码对我来说看起来不错。

标签: sql plsql plsqldeveloper plsql-package


【解决方案1】:
SET SERVEROUTPUT ON;
DECLARE v_dept department.department_name%type;
CURSOR c_dept is SELECT department_name FROM department order by 
department_name asc;
BEGIN dbms_output.put_line('Department Names are :');
OPEN c_dept;
LOOP
FETCH c_dept INTO v_dept;
EXIT WHEN c_dept%notfound;
dbms_output.put_line(v_dept);
END LOOP;
CLOSE c_dept; END;

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2020-12-18
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多