Oracle 为什么当我运行这个过程时,它要求我绑定变量?

Oracle 为什么当我运行这个过程时,它要求我绑定变量?,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我正在写一个程序,这样可以看到完整的库存列表,但是当库存水平低于最低库存水平时,它会输出一行额外的内容。。但是,当我运行该过程时,它要求我将一个变量绑定到stock\u cursor.stock\u qty值,我对此感到非常困惑,因为表中已经有数据了。。你知道为什么会这样吗 CREATE OR REPLACE PROCEDURE stockLevel AS BEGIN FOR stock_cursor IN ( SELECT toy_name, stock_qty, min_stock_qty

我正在写一个程序,这样可以看到完整的库存列表,但是当库存水平低于最低库存水平时,它会输出一行额外的内容。。但是,当我运行该过程时,它要求我将一个变量绑定到stock\u cursor.stock\u qty值,我对此感到非常困惑,因为表中已经有数据了。。你知道为什么会这样吗

CREATE OR REPLACE PROCEDURE stockLevel AS
BEGIN
FOR stock_cursor IN
( SELECT toy_name, stock_qty, min_stock_qty FROM w_toy_stock) 
   LOOP DBMS_OUTPUT.PUT_LINE(stock_cursor.toy_name ||' '||stock_cursor.stock_qty ||' '|| stock_cursor.min_stock_qty);
   IF :stock_cursor.stock_qty < stock_cursor.min_stock_qty THEN
   DBMS_OUTPUT.PUT_LINE('Stock is too low');
   END IF;
   END LOOP;  
END;

这是因为代码中有:stock\u游标。删除:就可以了。

这是因为代码中有:stock\u光标。删除:就可以了。

不要在代码中包含:。 使用:


不要在代码中包含:。 使用:


作为附带观察,我确实希望这只是一个家庭作业练习dbms_output.put_line不应用于实际应用程序代码中,除非在测试期间进行调试。PL/SQL无法直接与客户机交互,dbms_输出的输出不会进入您的屏幕。它进入缓冲区,然后由客户机进程sqlplus、sqldev等选择是否显示它。然后,只有在完成整个PL/SQL过程后,控件才会返回给客户机,让客户机做出决定。此外,在您的代码中,stock_cursor不是一个游标,而是一条记录。作为附带观察,我真的希望这只是一个家庭作业dbms_output.put_行不应该在实际应用程序代码中使用,除非在测试期间进行调试。PL/SQL无法直接与客户机交互,dbms_输出的输出不会进入您的屏幕。它进入缓冲区,然后由客户机进程sqlplus、sqldev等选择是否显示它。然后,只有在完成整个PL/SQL过程后,控件才会返回给客户机,使其能够做出决定。
IF stock_cursor.stock_qty < stock_cursor.min_stock_qty THEN