Display department names using Cursors.Create a PL/SQL 块使用游标显示部门 table 中的所有部门名称
Display department names using Cursors.Create a PL/SQL block to display all the department names from the Department table using cursors
TABLE:
Column name Data type Constraints
DEPARTMENT_ID NUMBER(5) PK
DEPARTMENT_NAME VARCHAR2(25) NOT NULL
LOCATION_ID VARCHAR2(15)
这个我试过了。但我仍然没有得到我的输出。谁能帮我得到输出。
set serveroutput on;
DECLARE
DEPARTMENT_NAME VARCHAR2(25);
CURSOR dep_cursor IS
SELECT
DEPARTMENT_NAME
FROM
department;
BEGIN
OPEN dep_cursor;
FETCH dep_cursor INTO DEPARTMENT_NAME;
DBMS_OUTPUT.PUT_LINE(‘Department Names are :’ || DEPARTMENT_NAME);
CLOSE dep_cursor;
END;
/
错误信息:未声明绑定变量“~”。
示例输出:
Department Names are :
ADMIN
DEVELOPMENT
TESTING
这是关于你在这里使用的那些“花哨的”单引号:
DBMS_OUTPUT.PUT_LINE(‘Department Names are :’ || DEPARTMENT_NAME);
应该是
DBMS_OUTPUT.PUT_LINE('Department Names are :' || DEPARTMENT_NAME);
关于您所犯的其他“错误”:没有 循环 ,光标 returns 只有一行,然后您会显示它。我建议您切换到循环游标,因为它更易于维护:
begin
for cur_r in (select department_name from department) loop
dbms_output.put_line(cur_r.department_name);
end loop;
end;
/
这就是您需要的一切;没有声明部分,没有打开或关闭游标,不用担心退出循环...Oracle 为您完成。
SET SERVEROUTPUT ON;
declare
v_dept department.department_name%type;
cursor c_dept is SELECT department_name FROM department;
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;
/
设置服务器输出;
宣布
v_dept department.department_name%类型;
游标 c_dept 是 SELECT department_name FROM department ORDER BY DEPARTMENT_NAME;
开始
dbms_output.put_line('Department Names are :');
打开c_dept;
环形
获取 c_dept 进入 v_dept;
当 c_dept%notfound 时退出;
dbms_output.put_line(v_dept);
结束循环;
关闭 c_dept;
结尾;
/
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;
这将 100% 有效,因为问题也要求以 升序 显示。
如果觉得有用请up-vote
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;
TABLE:
Column name Data type Constraints
DEPARTMENT_ID NUMBER(5) PK
DEPARTMENT_NAME VARCHAR2(25) NOT NULL
LOCATION_ID VARCHAR2(15)
这个我试过了。但我仍然没有得到我的输出。谁能帮我得到输出。
set serveroutput on;
DECLARE
DEPARTMENT_NAME VARCHAR2(25);
CURSOR dep_cursor IS
SELECT
DEPARTMENT_NAME
FROM
department;
BEGIN
OPEN dep_cursor;
FETCH dep_cursor INTO DEPARTMENT_NAME;
DBMS_OUTPUT.PUT_LINE(‘Department Names are :’ || DEPARTMENT_NAME);
CLOSE dep_cursor;
END;
/
错误信息:未声明绑定变量“~”。
示例输出:
Department Names are :
ADMIN
DEVELOPMENT
TESTING
这是关于你在这里使用的那些“花哨的”单引号:
DBMS_OUTPUT.PUT_LINE(‘Department Names are :’ || DEPARTMENT_NAME);
应该是
DBMS_OUTPUT.PUT_LINE('Department Names are :' || DEPARTMENT_NAME);
关于您所犯的其他“错误”:没有 循环 ,光标 returns 只有一行,然后您会显示它。我建议您切换到循环游标,因为它更易于维护:
begin
for cur_r in (select department_name from department) loop
dbms_output.put_line(cur_r.department_name);
end loop;
end;
/
这就是您需要的一切;没有声明部分,没有打开或关闭游标,不用担心退出循环...Oracle 为您完成。
SET SERVEROUTPUT ON;
declare
v_dept department.department_name%type;
cursor c_dept is SELECT department_name FROM department;
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;
/
设置服务器输出; 宣布 v_dept department.department_name%类型; 游标 c_dept 是 SELECT department_name FROM department ORDER BY DEPARTMENT_NAME; 开始 dbms_output.put_line('Department Names are :'); 打开c_dept; 环形 获取 c_dept 进入 v_dept; 当 c_dept%notfound 时退出; dbms_output.put_line(v_dept); 结束循环; 关闭 c_dept; 结尾; /
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;
这将 100% 有效,因为问题也要求以 升序 显示。 如果觉得有用请up-vote
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;