Plsql 显示用户定义的物料ID的物料和库存信息

Plsql 显示用户定义的物料ID的物料和库存信息,plsql,cursor,implicit,explicit,ampersand,Plsql,Cursor,Implicit,Explicit,Ampersand,因此,与标题状态类似,我的任务是显示用户定义的项目ID中的项目和库存信息。我必须编写一行select语句,返回项目描述,然后将其显示为标题行。假设用户通过使用“&”(符号)变量输入了项目id为2,则将输出格式化如下:这是用于PLSQL btw的 Item ID: 2 Item Description: 3-Season Tent 我还必须创建一个显式或隐式光标,返回并显示每个库存项目的大小、颜色、当前价格、现存量和总值(价格*现存量)。到目前为止,我有这个,但我不知道我是否在正确的方向 --C

因此,与标题状态类似,我的任务是显示用户定义的项目ID中的项目和库存信息。我必须编写一行select语句,返回项目描述,然后将其显示为标题行。假设用户通过使用“&”(符号)变量输入了项目id为2,则将输出格式化如下:这是用于PLSQL btw的

Item ID: 2 Item Description: 3-Season Tent
我还必须创建一个显式或隐式光标,返回并显示每个库存项目的大小、颜色、当前价格、现存量和总值(价格*现存量)。到目前为止,我有这个,但我不知道我是否在正确的方向

--CORRECT CODE IS LISTED BELOW WITH NEXT PROBLEM
更新!!:好的,我得到了代码,但对于下一部分,我坚持创建一个变量来计算所有库存项目的总值,然后在处理完所有行后显示出来……应该是这样的:

TOTAL VALUE: --WHATEVER TOTAL VALUE ITS SUPPOSED TO BE FOR THE PARTICULAR ITEM
到目前为止,我已经得到了这个,但计算不正确

declare
item_descript   item.item_desc%type;
iItem_id    item.item_id%type;
inItemid    inventory.item_id%type;
invcolor    inventory.color%type;
invsize     inventory.inv_size%type;
invprice    inventory.inv_price%type;
invqoh      inventory.inv_qoh%type;
value       number;
newval      number;
totalval    number;

cursor c1 IS
SELECT item.item_id, item.item_desc, inventory.item_id, inventory.color, inventory.inv_size, inventory.inv_price, inventory.inv_qoh
from item join inventory on item.item_id=inventory.item_id
where item.item_id=&item_id;




begin


open c1;

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;
    --exit when c1%notfound;

    DBMS_OUTPUT.PUT_LINE('Item ID: '||iItem_id||' Item Description: '||item_descript);


close c1;


open c1;
loop

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;



        exit when c1%notfound;

        value := (invprice*invqoh);

        newval := value; -- THIS IS WHERE I'M NOT SURE AS HOW TO CALCULATE FOR TOTAL VALUE???

        totalval := value + newval; --NOT SURE ?????



    DBMS_OUTPUT.PUT_LINE('================');
    DBMS_OUTPUT.PUT_LINE('Size: '||invsize);
    DBMS_OUTPUT.PUT_LINE('Color: '||invcolor);
    DBMS_OUTPUT.PUT_LINE('Price: '||invprice);
    DBMS_OUTPUT.PUT_LINE('QOH: '||invqoh);
    DBMS_OUTPUT.PUT_LINE('Value: '||value);

end loop;




    DBMS_OUTPUT.PUT_LINE('TOTAL VALUE: '||totalval); --THIS OUTPUT SHOULD BE CORRECT IF ONLY IT WOULD CALCULATE CORRECTLY




close c1;



commit;
end;
/

我意识到我有一些不必要的额外编码。还更改了游标select语句中的where子句,以通过&ersandso.is.it.working.now.If.my.answer.help.you.can.you.pl.accept.my.answer.Thank说明用户定义的变量
Hi I think the problem is with the select query in the cursor. Please try this and let me know for any issues.


DECLARE
  item_descript item.item_desc%type;
  iItem_id item.item_id%type;
  inItemid inventory.item_id%type;
  invcolor inventory.color%type;
  invsize inventory.inv_size%type;
  invprice inventory.inv_price%type;
  invqoh inventory.inv_qoh%type;
  value NUMBER;
  CURSOR c1
  IS
    SELECT item.item_id,
      item.item_desc,
      inventory.item_id,
      inventory.color,
      inventory.inv_size,
      inventory.inv_price,
      inventory.inv_qoh
    FROM item,
      inventory
    WHERE item.item_id=inventory.item_id
    AND item_id       =
      &item_id;
BEGIN
  OPEN c1;
  LOOP
    FETCH c1
    INTO iItem_id,
      item_descript,
      inItemid,
      invcolor,
      invsize,
      invprice,
      invqoh;
    EXIT
  WHEN c1%notfound;
    IF iItem_id=inItemid THEN
      value   :=(invprice*invqoh);
      SELECT item_desc
      INTO item_descript
      FROM item
      ,inventory
      WHERE item.item_id  =inventory.item_id
      AND item.item_id  =iItem_id
      AND inventory.item_id=inItemid;
    END IF;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('Item ID: '||iItem_id||'Item Description: '||item_descript);
  DBMS_OUTPUT.PUT_LINE('================');
  DBMS_OUTPUT.PUT_LINE('Size: '||invsize);
  DMBS_OUTPUT.PUT_LINE('Color: '||invcolor);
  DBMS_OUTPUT.PUT_LINE('Price: '||invprice);
  DBMS_OUTPUT.PUT_LINE('QOH: '||invqoh);
  DBMS_OUTPUT.PUT_LINE('Value: '||value);
END;
declare
item_descript   item.item_desc%type;
iItem_id    item.item_id%type;
inItemid    inventory.item_id%type;
inv   color inventory.color%type;
invsize     inventory.inv_size%type;
invprice    inventory.inv_price%type;
invqoh      inventory.inv_qoh%type;
value       number;
--totalval  number;

cursor c1 IS
SELECT item.item_id, item.item_desc, inventory.item_id, inventory.color, inventory.inv_size, inventory.inv_price, inventory.inv_qoh
from item join inventory on item.item_id=inventory.item_id
where item.item_id=&item_id;




begin


open c1;

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;
    --exit when c1%notfound;

    DBMS_OUTPUT.PUT_LINE('Item ID: '||iItem_id||'Item Description: '||item_descript);


close c1;


open c1;
loop

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;



        exit when c1%notfound;

        value := (invprice*invqoh);









    DBMS_OUTPUT.PUT_LINE('================');
    DBMS_OUTPUT.PUT_LINE('Size: '||invsize);
    DBMS_OUTPUT.PUT_LINE('Color: '||invcolor);
    DBMS_OUTPUT.PUT_LINE('Price: '||invprice);
    DBMS_OUTPUT.PUT_LINE('QOH: '||invqoh);
    DBMS_OUTPUT.PUT_LINE('Value: '||value);

end loop;   





close c1;
commit;
end;
/
hey can you try this and let me know for any issues.Thanks

declare
item_descript   item.item_desc%type;
iItem_id    item.item_id%type;
inItemid    inventory.item_id%type;
invcolor    inventory.color%type;
invsize     inventory.inv_size%type;
invprice    inventory.inv_price%type;
invqoh      inventory.inv_qoh%type;
value       number;
newval      number;
totalval    number;

cursor c1 IS
SELECT item.item_id, item.item_desc, inventory.item_id, inventory.color, inventory.inv_size, inventory.inv_price, inventory.inv_qoh
from item join inventory on item.item_id=inventory.item_id
where item.item_id=&item_id;




begin


open c1;

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;
    --exit when c1%notfound;

    DBMS_OUTPUT.PUT_LINE('Item ID: '||iItem_id||' Item Description: '||item_descript);


close c1;


open c1;
loop

    fetch c1 into iItem_id, item_descript, inItemid, invcolor, invsize, invprice, invqoh;



        exit when c1%notfound;

        totalval := totalval + (invprice*invqoh);

        value:= (invprice*invqoh);

       -- newval := value; -- THIS IS WHERE I'M NOT SURE AS HOW TO CALCULATE FOR TOTAL VALUE???

        --totalval := value + newval; --NOT SURE ?????



    DBMS_OUTPUT.PUT_LINE('================');
    DBMS_OUTPUT.PUT_LINE('Size: '||invsize);
    DBMS_OUTPUT.PUT_LINE('Color: '||invcolor);
    DBMS_OUTPUT.PUT_LINE('Price: '||invprice);
    DBMS_OUTPUT.PUT_LINE('QOH: '||invqoh);
    DBMS_OUTPUT.PUT_LINE('Value: '||value);

end loop;




    DBMS_OUTPUT.PUT_LINE('TOTAL VALUE: '||totalval); --THIS OUTPUT SHOULD BE CORRECT IF ONLY IT WOULD CALCULATE CORRECTLY




close c1;



commit;
end;