Функция SQL, принимающая несколько входных аргументов и возвращающая таблицу - PullRequest
0 голосов
/ 10 ноября 2018

Мне нужно написать функцию в PGADMIN 4, в SQL, которая принимает несколько значений в качестве входных данных и должна возвращать таблицу с другой информацией. Поэтому я попробовал следующий код, но я просто не знаю, как заставить его работать ...:

CREATE OR REPLACE FUNCTION public.take_customer_info(varchar, 
varchar,varchar,varchar,date,smallint,boolean,                                           
varchar,varchar,bigint,bigint,varchar,varchar,smallint,bigint,date,                                          
smallint,boolean,smallint,smallint,smallint)

returns table(
          customer_id smallint, 
          email varchar,  
          address varchar, 
          order_id smallint, 
          order_card bigint,
          total smallint)
AS $info$
DECLARE 
order_id smallint;
address varchar;
total smallint;
begin
    SELECT MAX(order_id)
    FROM the_order as order_id;
    address =($13|| ' ' || $11 || ', '|| $12|| ', ' || $8);
    total = $19 * $21;
CASE WHEN customer.email != $1 and product.product_id = $20 then
    insert into public.customer values($1,$2,$3,$4,$5,$6);
    insert into public.shipping_address 
    values($7,$8,$9,$10,$11,$12,$13,$6,$14);
    insert into public.credit_card values($15,$16,$17,$18,$3,$4,$6);
    insert into public.item_ordered values ($20,$19,$21,default,default);
    select currval('public.item_ordered_order_id_sql') into order_id;
    insert into public.the_order values (order_id,$14,default,$15,$6);
    update public.product set product.stock_quantity = 
    product.stock_quantity-$19 where product.product_id = $6;

    WHEN customer.email=$1 THEN
    RAISE EXCEPTION 'Nonexistent email --> %', $1
        USING HINT = 'Please check your user email';
    WHEN product.product_id =! $20 then
    RAISE EXCEPTION 'Nonexistent ID --> %', $20
        USING HINT = 'Please check your product ID';
    END
RETURN QUERY (SELECT customer.customer_id, customer.email, address, order_id, 
the_order.cc, total FROM customer,the_order WHERE customer.customer_id = 
the_order.customer_id);
END;
$info$ language plpgsql;'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...