我试图询问用户他们想要在名为“SKU”的某个列中选择哪个项目,并且我希望他们能够键入任何项目,并显示该表中的相应详细信息。
我知道要获得用户输入,您可以:
declare
x number;
begin
x := &enter_value;
dbms_output.put_line(x*2);
end;
这只是将用户输入乘以2,这只是一个例子。 我如何开始询问用户他们想要哪个项目,然后拿走该项目并显示将该项目与“SKU”表相关联的所有内容?
我的想法:
declare
SELECT * FROM SKU
WHERE SKU = x
x number;
begin
x := &enter_the_sku;
dbms_output.put_line(SKU);
end;
期望的输出: 我希望它像运行代码一样运行:
SELECT *
FROM SKU
WHERE item = 234;
我知道这根本不对,因为它没有运行,但如果有人知道如何将此代码更改为我想要的输出,我们将不胜感激。
编辑:我知道我可以运行select * from语句来获得我想要的东西,但我正在尝试学习PL / SQL。
答案 0 :(得分:0)
您可以在运行SQL时简单地接收用户输入。
SELECT *
FROM SKU
WHERE item = &item ;
如果要运行PL / SQL块来检索结果,可以使用存储过程和REFCURSOR
绑定变量。
CREATE OR REPLACE PROCEDURE pr_getcu
(p_ITEM IN SKU.item%TYPE, p_query OUT SYS_REFCURSOR ) AS
BEGIN
OPEN p_query FOR SELECT *
FROM SKU
WHERE item = p_ITEM ;
END;
/
VARIABLE cursku REFCURSOR
EXECUTE pr_getcu(&item, :cursku)
--Get the user input for item at this point
PRINT cursku