我的程序没有给我想要的结果,是因为比较是在2个varchar变量之间进行的吗?
以员工人数和物业租金价格为参数
这是我写的代码
表格:
create or replace procedure proprety_info ( p_sno staff.sno%type, p_rent property_for_rent.rent%type)
as
cursor executive is
select s.sno, fname, pnum, street, rent
from staff s, property_for_rent p
where s.sno = p.sno
and p_rent < rent;
begin
for v_loop in executive loop
DBMS_OUTPUT.PUT_LINE ('staff number: ' || v_loop.sno);
dbms_output.put_line ('staff name: ' || v_loop.fname);
dbms_output.put_line ('property number: ' || v_loop.pnum);
dbms_output.put_line ('street: ' || v_loop.street);
dbms_output.put_line ('rent price: ' || v_loop.rent);
end loop;
END proprety_info;
/
set serveroutput on;
exec proprety_info('sg14',400);
我得到结果是:
staff number: sa9
staff name: mary
property number: pa14
street: 16 high st
rent price: 650
staff number: sg14
staff name: david
property number: pg16
street: 5 novar rd
rent price: 450
staff number: sg37
staff name: ann
property number: pg21
street: 18 dale rd
rent price: 600
我所期待的
staff number: sg14
staff name: david
property number: pg16
street: 5 novar rd
rent price: 450
2条答案
按热度按时间w8biq8rn1#
我想你应该:
rdlzhqv92#
您的游标(第一个SQL)没有通过函数参数(p_sno)过滤SNO列,因此您得到了3行。
如果你也使用那个过滤器(第二个SQL)-你应该得到你需要的...
您的光标定义应如下所示...