使用 Oracle 19c,我尝试编写一个存储过程。我已经删除了很多其他代码,但以最简单的形式,我需要运行一些动态 SQL,然后在记录中返回值。我在运行时遇到的错误(编译正常)是:
ORA-00932: inconsistent datatypes: expected UDT got CHAR
我的代码是:
create or replace TYPE rep_mapping_object as OBJECT
( REGISTRY_ID varchar2(20 BYTE )
);
CREATE OR REPLACE TYPE rep_mapping_record IS TABLE OF rep_mapping_object;
create or replace PROCEDURE my_test( vROW OUT rep_mapping_record )
IS
mySQL varchar2(2000);
BEGIN
mySQL := 'select registry_id from src_territory_assignment fetch first row only';
execute immediate mySQL into vROW;
END;
解决这个问题后,我的 rep_mapping_object 将包含更多列,SQL 语句也是如此。SQL 语句将仅返回 0 或 1 行。
我做错什么了?
方法如下:
样品类型及表格:
程序;参见第 5 行和第 6 行:
测试: