КУРСОР В ПРОЦЕДУРЕ PL / SQL - PullRequest
0 голосов
/ 01 декабря 2019

Я успешно создал процедуру для проверки товара на складе, вот синтаксис:

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;

Теперь я хочу создать ту же процедуру, но мне нужно ввести имя элемента, чтобы на выходе был запасэто имя элемента, которое я ввел, может кто-нибудь показать мне путь / синтаксис, используя синтаксис, который я дал выше? спасибо

Ответы [ 2 ]

1 голос
/ 01 декабря 2019
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;
0 голосов
/ 02 декабря 2019

Вам необходимо использовать один 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;
/

, но таким образом вы получите последнее значение акции из курсора для нескольких возвращаемых строк. Неясно, какое значение для стоимости акций. Итак, я подумал о суммировании возвращаемых запасов.

...