[英]CURSOR IN PROCEDURE PL/SQL
我已經成功創建了檢查我的庫存項目的程序,這里是語法:
create or replace procedure check_stock
AS
CURSOR check_stock IS
select category.category_name, item.item_name, item.stock from category join item on category.category_id = item.category_id;
begin
for stock in check_stock
LOOP
DBMS_OUTPUT.PUT_LINE(stock.category_name||' '||stock.item_name||' '||stock.stock);
END LOOP;
End;
現在我想創建相同的過程,但我需要輸入項目名稱,因此輸出是我輸入的項目名稱的庫存,有人可以使用我上面給出的語法向我展示方式/語法嗎? 謝謝
create or replace procedure check_stock ( v_item_name in Integer )
AS
CURSOR check_stock IS
select category.category_name, item.item_name, item.stock from category join item on category.category_id = item.category_id where item.item_name = v_item_name ;
begin
for stock in check_stock
LOOP
DBMS_OUTPUT.PUT_LINE(stock.category_name||' '||stock.item_name||' '||stock.stock);
END LOOP;
End;
您需要使用一個IN
和一個OUT
參數:
SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE check_stock(
i_item_name in item.item_name%type,
o_stock out category.stock%type
) AS
CURSOR check_stock IS
SELECT c.category_name, i.item_name, i.stock
FROM category c
JOIN item i
ON c.category_id = i.category_id
WHERE i.item_name = i_item_name;
BEGIN
FOR stock IN check_stock
LOOP
DBMS_OUTPUT.PUT_LINE(stock.category_name || ' ' || stock.item_name || ' ' || stock.stock);
o_stock := nvl(o_stock,0) + stock.stock;
END LOOP;
END;
/
但是通過這種方式,您可以從多個返回行的游標中獲取股票的最后一個值。 目前尚不清楚股票價值的價值。 所以,我考慮總結返回的股票價值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.