Oracleのストアド関数からクエリを返そうとしています。この単純な試みは失敗します:
CREATE OR REPLACE TYPE GetObjectsForFolderObjectType IS OBJECT (
FOLDER_ID NUMBER(9), OBJECT_ID NUMBER(9)
);
CREATE OR REPLACE TYPE GetObjectsForFolderTableType IS
TABLE OF GetObjectsForFolderObjectType;
CREATE OR REPLACE FUNCTION GetObjectsForFolder
(FOLDER_ID INTEGER, FOLDER_DATA_TABLE VARCHAR2)
RETURN GetObjectsForFolderTableType IS
THE_RESULT GetObjectsForFolderTableType := GetObjectsForFolderTableType ( );
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM '||FOLDER_DATA_TABLE BULK COLLECT INTO THE_RESULT;
RETURN THE_RESULT;
END;
SELECT * FROM TABLE(GetObjectsForFolder(1, 'MY_TABLE_NAME'));
上記の結果は次のとおりです。
ORA-00932: inconsistent datatypes: expected - got -
ORA-06512: at "USERNAME.GETOBJECTSFORFOLDER", line 6
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
注:例ではいくつかのことをマスクしましたが、ORA-00932の行には「expected--got-」と表示されます。