我可以寫什么來獲取從第一個表到最后一個表的所有 id 號?
CREATE OR REPLACE FUNCTION PRICE(
L_CUST_ID PRICELIST.CUSTOMERS_ID%TYPE,
L_ITEMS_ID PRICELIST.ITEMS_ID%TYPE,
P_PRICELIST_PRICE NUMBER)
)
RETURNS NUMBER AS
BEGIN
FOR I IN 1..< last id of customers> LOOP
FOR I IN 1..< last id of items> LOOP
INSERT INTO PRICE
(CUSTOMERS_ID, ITEMS_ID, P_PRICE)
VALUES
( L_CUST_ID, L_ITEMS_ID,ROUND(dbms_random.value(0,15),4));
END LOOP;
END LOOP;
RETURN L_CUST_ID;
END PRICE;
uj5u.com熱心網友回復:
你真的不想使用嵌套回圈;對于小資料集,您不會注意到任何區別,但是 - 如果表包含許多行,則逐行處理速度會越來越慢并且性能會受到影響。
因此,您為什么不交叉連接這些表呢?這是一個例子。
示例表:
SQL> select * From customers;
CUSTOMERS_ID NAME
------------ ------
1 Little
2 Foot
SQL> select * From items;
ITEMS_ID NAME
---------- -------
10 Gloves
11 Matches
12 Bottle
插入交叉連接資料:
SQL> insert into price (customers_id, items_id, p_price)
2 select c.customers_id, i.items_id, round(dbms_random.value(0, 15), 4)
3 from customers c cross join items i;
6 rows created.
結果:
SQL> select * from price;
CUSTOMERS_ID ITEMS_ID P_PRICE
------------ ---------- ----------
1 10 11,5653
1 11 8,9442
1 12 4,4143
2 10 5,3387
2 11 14,602
2 12 14,2723
6 rows selected.
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361908.html
