在SQL Developer中执行和测试存储过程

时间:2019-12-21 17:51:28

标签: sql oracle oracle-sqldeveloper

我不知道如何执行或测试此过程。我是那个领域的新手。提前致谢。

表价格具有id,price,datePrice和productId。餐桌产品具有ID,当前价格和名称

        create or replace PROCEDURE "currentprice"
        (idproduct IN NUMBER) AS
        currentprice products.current_price%type;
        BEGIN
         SELECT price INTO currentprice 
         FROM prices
         WHERE productId=idprice AND datePrice=(select max(datePrice) FROM prices WHERE 
          productId=idprice AND datePrice<=SYSDATE);

          UPDATE products
          SET currentprice = currentprice 
          WHERE id=idproduct;
           END;

2 个答案:

答案 0 :(得分:1)

Begin
 "currentprice"(1);
End;
/

Commit;

在SQL Developer中使用F5执行,然后查询表数据以查看新价格。

我建议您将过程重命名为currentprice-不加引号...可以为您省去很多麻烦。

您还可以浏览到SQL Developer中的过程并打开它,然后使用“执行”按钮。

答案 1 :(得分:0)

我重命名了过程-没有引号。再次找不到数据。

我有触发该程序的触发器

     create or replace TRIGGER currentprice2
       AFTER INSERT OR UPDATE OR DELETE ON Prices
       DECLARE
       s NUMBER:=priceproduct.id;
       BEGIN
        currentprice(s);
       END;

我也有包裹。也许我在打包参数ID方面弄错了。

      create or replace PACKAGE priceproduct IS
      id products.id%TYPE;
      END priceproduct;