小编use*_*120的帖子

PLSQL Procudure(Oracle)比较where子句中的变量

这真让我抓狂.我想对列和变量进行简单的比较,但它不起作用.以下行总是计算所有元组,而我只需要那些由where子句条件限制的元组.

 SELECT count(*) INTO cnt from class where class.fid = fid;
Run Code Online (Sandbox Code Playgroud)

它看起来很简单,但我已经在这个工作了几个小时.完整的sql proc是

令人困惑的是,如果我用一些硬编码ID(如105)替换fid,它会给出一个正确的答案),但是当我使用fid时它就不再起作用了,并返回所有类的计数.由于某种原因,总是class.fid = fid.当我使用>,<或<>时,返回0计数!

create or replace PROCEDURE pro_report2
AS
CURSOR c_dept IS select deptid, dname from department;
TYPE cur_typ IS REF CURSOR;
c1 cur_typ;
query_str1 VARCHAR2(200);
fid faculty.fid%type := 102;
fname faculty.fname%type;
cnt NUMBER;

BEGIN
    FOR dept_row in c_dept LOOP
        DBMS_OUTPUT.PUT_LINE('Dept.Name: ' || dept_row.dname);
        DBMS_OUTPUT.PUT_LINE('Faculty Name' || chr(9)|| chr(9) || '0 Class' || chr(9) || chr(9) || '1 Class' || chr(9) || chr(9) || '2 Classes' || …
Run Code Online (Sandbox Code Playgroud)

mysql sql database oracle sqlplus

7
推荐指数
1
解决办法
704
查看次数

标签 统计

database ×1

mysql ×1

oracle ×1

sql ×1

sqlplus ×1