Процедура PL / SQL для внутреннего соединения и предложение where - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу создать хранимую процедуру PL / SQL для следующего запроса:

SELECT order_id, order_date,  customer_id
FROM Orders 
INNER JOIN Customers ON Orders.customer_id = Customers.customer_id
WHERE order_id = xyz;

Я хочу передать order_id в качестве входного параметра в хранимую процедуру.Может кто-нибудь, пожалуйста, поделитесь PL / SQL-кодом для этого?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Самая простая форма процедуры, которая возвращает эти значения, выглядит следующим образом (:

create or replace procedure retrieve_order_values(
  p_order_id IN Orders.order_id%type
, p_order_date OUT Orders.order_date%type
, p_customer_id OUT Orders.customer_id%type
)
is
begin
  select order_date, customer_id
  into p_order_date, p_customer_id
  from orders
  where order_id = p_order_id;
end retrieve_order_values;

Обратите внимание, что вам не нужно соединение с таблицей Customers для получения customer_id.

0 голосов
/ 16 ноября 2018

Попробуйте эту функцию

   CREATE OR REPLACE FUNCTION fn_test(p1 IN NUMBER)
    RETURN VARCHAR2
    IS

    s_query_stmt     VARCHAR2(1000 CHAR);
    r1               VARCHAR2(100 CHAR);
    r2               VARCHAR2(100 CHAR);
    r3               VARCHAR2(100 CHAR);

   BEGIN

   s_query_stmt := 'Select order_id, order_date, customer_id 
                    From Orders inner join Customers 
                    On Orders.customer_id = Customers.customer_id
                   WHERE order_id = :x )';

   EXECUTE IMMEDIATE s_query_stmt INTO r1, r2, r3 USING p1;
   return 'x';

  END;
...