v_count:=0;
WHILE v_count=0
LOOP
SELECT &部门ID INTO v_department_id FROM dual;
--dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
--dbms_output.put_line(v_count);
END LOOP;
我想用如上代码实现如果用户输入的部门ID在department表中不存在就要求用户重新输入!
但是当输入一个不存在的部门ID,比如:1002,时,如上代码被替换为:
v_count:=0;
WHILE v_count=0
LOOP
SELECT 1002INTO v_department_id FROM dual;
sys.dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
dbms_output.put_line(v_count);
END LOOP;
这样只有第一次可以输入,而且输入后就成了死循环!
请教大家实现该功能是如何做的?我的这段代码该如何修改才能实现我想要的功能!
最初由 zhpsam 发布
[B]v_count:=0;
WHILE v_count=0
LOOP
SELECT &部门ID INTO v_department_id FROM dual;
--dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
--dbms_output.put_line(v_count);
END LOOP;
我想用如上代码实现如果用户输入的部门ID在department表中不存在就要求用户重新输入!
但是当输入一个不存在的部门ID,比如:1002,时,如上代码被替换为:
v_count:=0;
WHILE v_count=0
LOOP
SELECT 1002INTO v_department_id FROM dual;
sys.dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
dbms_output.put_line(v_count);
END LOOP;
这样只有第一次可以输入,而且输入后就成了死循环!
请教大家实现该功能是如何做的?我的这段代码该如何修改才能实现我想要的功能! [/B]
安装你说的需求,你的写法明显有问题,不知道循环用来干吗的?
写成一个函数,判断一次就可以了啊?
最初由 zhpsam 发布
[B]v_count:=0;
WHILE v_count=0
LOOP
SELECT &部门ID INTO v_department_id FROM dual;
--dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
--dbms_output.put_line(v_count);
END LOOP;
我想用如上代码实现如果用户输入的部门ID在department表中不存在就要求用户重新输入!
但是当输入一个不存在的部门ID,比如:1002,时,如上代码被替换为:
v_count:=0;
WHILE v_count=0
LOOP
SELECT 1002INTO v_department_id FROM dual;
sys.dbms_output.put_line(v_department_id);
SELECT COUNT(*) INTO v_count FROM department WHERE department_id=v_department_id;
dbms_output.put_line(v_count);
END LOOP;
这样只有第一次可以输入,而且输入后就成了死循环!
请教大家实现该功能是如何做的?我的这段代码该如何修改才能实现我想要的功能! [/B]
我想可能是NULL的问题,可以这样吗?
v_count:=0;
WHILE v_count=0
LOOP
SELECT 1002INTO v_department_id FROM dual;
sys.dbms_output.put_line(v_department_id);
SELECTNVL(COUNT(*),0)INTO v_count FROM department WHERE department_id=v_department_id;
dbms_output.put_line(v_count);
END LOOP;
没有测试过。
我想可能是NULL的问题,可以这样吗?
v_count:=0;
WHILE v_count=0
LOOP
SELECT 1002INTO v_department_id FROM dual;
sys.dbms_output.put_line(v_department_id);
SELECTNVL(COUNT(*),0)INTO v_count FROM department WHERE department_id=v_department_id;
dbms_output.put_line(v_count);
END LOOP;
没有测试过。 [/B]
还是死循环呀,呵呵
我的意思是第一次输入后替换为:SELECT 1002 INTO v_department_id FROM dual;
循环体执行第二次的时候没有那个&符号了,执行的是:SELECT 1002 INTO v_department_id FROM dual;
而不是SELECT &部门IDINTO v_department_id FROM dual;
所以就死循环了,解决这个问题的关键是怎样使循环执行第二次的时候,还是提示用户输入部门id,不知道大家明白没有?