ORA-02149與變數賦值
最近在將一heap日誌表調整為partition的日誌表時,發現一個問題,那就是查詢分割槽資料時無法直接按變數來進行查詢。過程如下:
insert into t_actionlog_backup
select * from t_actionlog partition(v_partition_name)
其中v_partition_name是我程式中傳入的分割槽名稱變數,結果無論我怎麼除錯都拋異常“ORA-02149: 指定的分割槽不存在”。
我直接在sql提示符下執行都是沒問題的。見如下的過程:
declare
v_partition_name varchar2(20);
begin
v_partition_name :='p_20071016';
insert into t_actionlog_backup
select * from t_actionlog partition(v_partition_name);
end;
ORA-02149: 指定的分割槽不存在
ORA-06512: 在line 5
SQL>
SQL> insert into t_actionlog_backup
2 select * from t_actionlog partition(p_20071016);
46 rows inserted
SQL>
沒辦法,只能用動態sql來解決。
SQL> declare
2 v_partition_name varchar2(20);
3 begin
4 v_partition_name :='p_20071016';
5 execute immediate 'insert into t_actionlog_backup select * from t_actionlog partition('||v_partition_name||')';
6 end;
7 /
PL/SQL procedure successfully completed
SQL>
開始懷疑oracle資料庫的低能。。。。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-979427/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell變數命名與賦值變數賦值
- shell中變數的取值與賦值變數賦值
- go語言變數的宣告與賦值Go變數賦值
- 變數的賦值 指標間接賦值變數賦值指標
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- 變數的解構賦值變數賦值
- shell 變數賦值問題變數賦值
- php變數賦值給jsPHP變數賦值JS
- python 多變數賦值Python變數賦值
- 關於變數與‘=’賦值的情況出錯變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- 物件屬性值賦給變數物件變數
- 給物件引用變數賦值(轉)物件變數賦值
- 簡單介紹Lua中的變數與賦值方法變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- c#小灶——常量、變數和賦值C#變數賦值
- AC-DMIS 5.3 V變數賦值變數賦值
- 再說mysql中的變數賦值MySql變數賦值
- 儲存過程中SELECT與SET對變數賦值儲存過程變數賦值
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- vue 變數賦值同時改變的問題Vue變數賦值
- JS中的變數賦值深入理解JS變數賦值
- 列表切片賦值給另一個變數賦值變數
- 自己對Java中if變數賦值的理解Java變數賦值
- ES6:變數的解構賦值變數賦值
- ES6:變數的結構賦值變數賦值
- ES6 變數的解構賦值變數賦值
- ECMAScript6變數的解構賦值變數賦值
- mysql 儲存過程中變數的定義與賦值操作MySql儲存過程變數賦值
- 把匿名函式賦值給變數,通過變數來呼叫函式賦值變數
- 把匿名函式賦值給變數,透過變數來呼叫函式賦值變數
- ES6 變數宣告與賦值:值傳遞、淺拷貝與深拷貝詳解變數賦值
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- 【c++】深賦值與淺賦值C++賦值
- ECMAScript 6入門 - 變數的解構賦值變數賦值
- ES6 - 變數的解構賦值解析變數賦值
- ES6之變數的解構賦值變數賦值