Anda bisa mendapatkan hasil kueri pertama ke dalam variabel (tanggal) dan kemudian menggunakannya:
SELECT sysdate into query_date FROM dual;
insert into test (my_date) values (query_date)
-- or if you really want dynamic SQL, with a bind variable
EXECUTE IMMEDIATE 'insert into test (my_date) values (:query_date)' using query_date;
Atau membaca pertanyaan Anda secara harfiah, gunakan string pertama sebagai bagian dari string kedua dengan menggabungkannya:
query_date := "SELECT sysdate FROM dual";
EXECUTE IMMEDIATE 'insert into test (my_date) ' || query_date;
Jika Anda mencetak pernyataan kedua alih-alih menjalankannya, Anda akan melihat:
insert into test (my_date) SELECT sysdate FROM dual
... yang merupakan SQL yang valid. Ini akan berfungsi jika query_string
lebih rumit atau sedang dibangun secara dinamis. Tetapi jika jumlah ekspresi kolom dalam query_string
pilih daftar juga bervariasi, Anda juga harus membuat daftar kolom secara dinamis, jika tidak, Anda akan memiliki terlalu banyak atau terlalu sedikit kolom untuk disisipkan.
Bagaimana tepatnya Anda melakukannya tergantung pada bagaimana Anda membuat string kueri - pada dasarnya saat Anda menambahkan ekspresi ke string kueri, Anda juga akan menambahkan nama kolom ke daftar terpisah, dan berakhir dengan:
EXECUTE IMMEDIATE 'insert into test (' || column_list ' ||) ' || query_string);
di mana column_list
dibangun sebagai katakanlah col1, col2
dan query_string
sebagai select x.col1, y.col2 from ...
.
Tidak ada alasan yang jelas untuk menggunakan SQL dinamis dalam apa yang Anda tunjukkan. Atau, jika Anda benar-benar menggunakan sysdate, perlu kueri terpisah untuk mendapatkannya, seperti yang bisa Anda lakukan:
insert into test (my_date) values (sysdate)
... jadi saya menganggap skenario nyata Anda benar-benar lebih rumit. Tetapi perhatikan bahwa Anda tidak menggunakan values
kata kunci dengan insert ... select ...
pola. Anda dapat melakukannya dengan satu kolom dan satu subkueri tetapi itu bukanlah ide yang baik, dan tidak akan berfungsi jika Anda memiliki banyak kolom dalam subkueri.