如果您的源和目標表適合此配置文件:
- 目標表中的列是相同的源表中的列,並
- 新的目標列在末尾
...然後你可以這樣做:
INSERT INTO dest_table
SELECT Source_Table.*, new_value
FROM Source_Table
WHERE Source_Table.PKValue = cursor.PKValue
如果它是一個ca光標類似於目標表,像這樣可能工作本身,而是注意我沒有測試它:
CREATE PROCEDURE whatever IS
destRow dest_table%ROWTYPE;
CURSOR fromSourceTable IS
SELECT <your existing select list>, NULL AS new_value
FROM <the rest of your cursor query>;
BEGIN
FOR destRow IN fromSourceTable LOOP
destRow.new_value = <the split date>;
INSERT INTO dest_table VALUES destRow;
END LOOP;
END whatever;
我要出去的肢體與NULL AS new_value
。如果您遇到問題,請嘗試使用CAST(NULL AS DATE) AS new_value
,如果您仍然遇到問題,請嘗試如SYSDATE AS new_value
。再次,這沒有測試,但如果你認爲它是有希望的,並且執行有困難,我很樂意測試它。
您是否正在嘗試編寫一個查詢,該查詢使用不同的'CurrentDate'返回該行的多個副本?你是否試圖編寫將數據插入到另一個表中的代碼?還有別的嗎?你談論一個遊標,但是你也在談論一個'INSERT'語句。你是否需要這個PL/SQL,因爲你正在做一堆額外的操作?或者單個SQL語句會起作用,因爲這樣會更高效? – 2013-05-03 18:51:51
單個sql語句會很好,但我不確定是否有可能使用1條記錄中的2個字段從1條記錄中「製作」更多記錄。 – user441521 2013-05-03 19:12:01