从oracle数据库创建用户输入

时间:2018-01-04 15:01:33

标签: sql oracle

我试图询问用户他们想要在名为“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。

1 个答案:

答案 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