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