我收到錯誤:ORA-00932: inconsistent datatypes: expected - got -。沒有資訊是什么型別不一致。我只看到-。有沒有辦法檢查它?下面的代碼是簡化的:
create type IMPORT_R as object (
ID int,
IMPORT1_ID int,
IMPORT2_ID int,
PROD_ID int
);
create type IMPORT_T as table of IMPORT_R;
CREATE FUNCTION GetImport(
id IN BINARY_INTEGER,
id2 IN BINARY_INTEGER,
id3 IN BINARY_INTEGER)
return IMPORT_T
IS
sqlCommand VARCHAR2(32000);
v_Result IMPORT_T;
begin
sqlCommand :=
'SELECT ID, IMPORT1_ID, IMPORT2_ID, PROD_ID
FROM
(
SELECT ID,
IMPORT1_ID,
-1 AS IMPORT2_ID,
PROD_ID
FROM TABLE1
WHERE IMPORT1> '|| id1;
IF id := 123 THEN
sqlCommand := sqlCommand||
'UNION
SELECT ID,
-1 AS IMPORT1_ID,
IMPORT2_ID,
PROD_ID
FROM TABLE2
WHERE IMPORT2> '|| id2;
END IF;
sqlCommand := sqlCommand||')' ;
EXECUTE IMMEDIATE sqlCommand BULK COLLECT INTO v_Result;
return v_Result;
end;
錯誤發生在執行 EXECUTE IMMEDIATE 的行中。有什么線索嗎?謝謝!
uj5u.com熱心網友回復:
發生這種情況是因為 Oracle 嘗試將 4 個數字(id、import1_id、import2_id、prod_id)放入一個結果列并失敗。
為了解決這個問題,您需要明確告訴資料庫如何將這 4 個數字轉換為一個物件。幸運的是它只需要更改第一行,查詢部分的第一行:
sqlCommand :=
'SELECT IMPORT_R(ID, IMPORT1_ID, IMPORT2_ID, PROD_ID)
一切都會好起來的
(我不知道為什么在這種情況下 ORA 訊息如此不清楚)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367876.html
