我想用pl/sql函数更新下面的表格,事情是我设法写了一个触发器代码,但我想用'function'来代替它。 我想为顾客5从30增加其以200和使用户能够输入:更新表格pl/sql
1)CUSTOMER_ID和 2)200为更新的量的数字5。 并在更新之前和之后打印出客户5的总数量。
Create table sales (customer_ID number(10), product_ID number(10), quantity number(10));
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,1,23);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(1,2,34);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(1,3,654);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,7,32);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(4,3,23);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,3,111);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(5,4,6);
触发代码中,我写道:
create or replace trigger quantity_change
before insert or update of quantity on sales
for each row
WHEN (NEW.customer_id > 0)
DECLARE
qua number;
BEGIN
qua := :NEW.quantity - :OLD.quantity;
dbms_output.put_line('Old quangtity: ' || :OLD.quantity);
dbms_output.put_line('New quantity: ' || :NEW.quantity);
dbms_output.put_line('diiference quangtity: ' || qua);
END;
UPDATE sales
SET quantity = 200 WHERE customer_id = 5;
我设法写这个程序,但仍然坚持,不知道如何启用使用
CREATE or replace PROCEDURE Updatesales
(
customer_ID number,
product_ID number,
quantity number)
AS
BEGIN
UPDATE sales
SET quantity= 100
WHERE customer_id= 4;
END;
我想用一个函数来解决这个问题,功能会像这样:
CREATE [OR REPLACE] FUNCTION function_name [(parameter_name [IN | OUT | IN OUT] type [, ...])]
RETURN return_datatype {IS | AS} BEGIN <function_body> END [function_name];
请指教
为什么?你的要求背后的目的是什么? – Boneist
更多功能知识 – Chaz
所以这是一个自学知识练习来了解功能?首先,如果我是你,我会尝试写这样的功能。您必须决定您需要的输入和输出参数,然后考虑如何使用参数来查找,更新和返回相关值。尝试一下,如果您遇到困难或有其他问题,请使用目前为止的内容更新您的问题。然后,我们可以给你更有帮助的指针。 – Boneist