首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00932同时执行成批量收集

ORA-00932同时执行成批量收集
EN

Stack Overflow用户
提问于 2021-11-24 12:43:48
回答 1查看 170关注 0票数 2

我收到了错误: ORA-00932:inconsistent datatypes: expected - got -。没有关于哪种类型不一致的信息。我只看到-。有办法检查吗?以下代码简化如下:

代码语言:javascript
复制
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;

此错误发生在执行立即执行的位置。有线索吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 14:09:08

这是因为Oracle试图将4个数字(id、import1_id、import2_id、prod_id)放入一个结果列中,但失败了。

为了解决这个问题,您需要显式地向数据库说明如何将这4个数字转换为一个对象。幸运的是,它只需要更改第一行,查询部分的第一行:

代码语言:javascript
复制
sqlCommand :=
    'SELECT IMPORT_R(ID, IMPORT1_ID, IMPORT2_ID, PROD_ID)

一切都会很好

(我不知道为什么奥拉-消息在这种情况下如此不明确)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70096296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档