請幫我解決問題,下面我面對,我必須將數據插入到內FORALL一個表(使用變量值和表已經創建genereted表名)..在FORALL語句執行即時編譯問題
Declare
TYPE dept_data_rec IS RECORD
(
Dept_no number,
Dept_name varchar2(100),
Dept_loc Varchar2(20)
);
TYPE nt_dept_data IS TABLE OF dept_data_rec ;
l_dept_data_nt nt_dept_data;
BEGIN
FORALL j IN 1..l_dept_data_nt.COUNT SAVE EXCEPTIONS
EXECUTE IMMEDIATE 'INSERT INTO '||l_get_dept_rec.dept_seq_no||'_Dept_Data VALUES '||
l_dept_data_nt(j);
COMMIT;
編譯此代碼時,我收到以下錯誤: PLS-00306:調用'||'時參數的數量或類型錯誤
然而,當使用實際的表名的代碼它的工作原理
FORALL j IN 1..l_dept_data_nt.COUNT SAVE EXCEPTIONS
INSERT INTO A1_dept_data VALUES
l_dept_data_nt(j);
COMMIT;
沒錯。 'l_dept_data_nt(j)'是行類型或記錄類型;你只能連接一個字符串,或者可以轉換成字符串的東西。我不認爲你可以使用綁定變量來做到這一點,即使它被定義爲'%rowtype',但我不是100%確定的。您可能需要查看'dbms_sql'。有人可能有一個更好的主意,雖然* 8-) –
謝謝..我覺得問題是與l_dept_data_nt(j),我想下面以及同樣的錯誤消息來了。 EXECUTE IMMEDIATE'INSERT INTO A1_dept_DATA VALUES'|| l_dept_data_nt(j); – user1717270
請提供'l_dept_data_nt'的聲明。似乎是一個集合。問題是標量或複合數據類型集合的元素是什麼? –