es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear una función que genere una nueva entrada aleatoria en la tabla de precios para cada combinación de cliente y producto, puedes seguir los siguientes pasos:

    1. Define un cursor que recupere todas las combinaciones distintas de cliente y producto de la tabla que aún no tienen una entrada en la tabla de precios.
    2. Recorre el cursor y usa el paquete DBMS_RANDOM para generar un nuevo precio aleatorio para cada combinación.
    3. Inserta el nuevo precio junto con los IDs de cliente y producto en la tabla de precios.

    Aquí hay un ejemplo de código PL/SQL que demuestra cómo implementar esta lógica:

    CREATE OR REPLACE FUNCTION add_random_price RETURN NUMBER IS
      CURSOR c_customers_items IS
        SELECT DISTINCT c.id AS cust_id, i.id AS item_id
        FROM customers c, items i
        WHERE NOT EXISTS (
          SELECT 1 FROM price p
          WHERE p.cust_id = c.id AND p.item_id = i.id
        );
      v_price NUMBER;
    BEGIN
      FOR rec IN c_customers_items LOOP
        v_price := ROUND(DBMS_RANDOM.VALUE(1, 100), 2);
        INSERT INTO price (cust_id, item_id, price)
        VALUES (rec.cust_id, rec.item_id, v_price);
      END LOOP;
      RETURN c_customers_items%ROWCOUNT;
    END;
    

    Para usar la función, simplemente llámala de la siguiente manera:

    BEGIN
      DBMS_OUTPUT.PUT_LINE(add_random_price || ' nuevos precios agregados');
    END;
    

    Esto agregará un precio aleatorio para cada nueva combinación de cliente y producto que aún no tenga una entrada en la tabla de precios. La función devolverá el número de nuevos precios que fueron agregados.

Comments are closed.