Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays PL/SQL中的数组作为返回类型运行,返回ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误_Arrays_Database_Oracle_Plsql_Sql Like - Fatal编程技术网

Arrays PL/SQL中的数组作为返回类型运行,返回ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误

Arrays PL/SQL中的数组作为返回类型运行,返回ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误,arrays,database,oracle,plsql,sql-like,Arrays,Database,Oracle,Plsql,Sql Like,在替换同义词和单词替换列表中出现的单词的基础上,一直在解决替换字符串中的单词的问题。根据替换情况,字符串可以生成多个字符串。其思想是将字符串替换为可以在SQL查询中使用的函数。但是,我得到了错误ORA-06502:PL/SQL:numeric或value错误:字符到数字的转换错误 有一个单词替换表,例如: WORD SUBS_LIST MOUNTAIN MOUNTAIN, MOUNT, MT, MTN VIEW VIEW, VU FORMULA FORM

在替换同义词和单词替换列表中出现的单词的基础上,一直在解决替换字符串中的单词的问题。根据替换情况,字符串可以生成多个字符串。其思想是将字符串替换为可以在SQL查询中使用的函数。但是,我得到了错误
ORA-06502:PL/SQL:numeric或value错误:字符到数字的转换错误

有一个单词替换表,例如:

WORD        SUBS_LIST
MOUNTAIN    MOUNTAIN, MOUNT, MT, MTN
VIEW        VIEW, VU
FORMULA     FORMULA, 4MULA, FOURMULA
此外,我还有如下同义词表:

WORD            SYN_LIST
EDUCATION       SCHOOL, UNIVERSITY, COLLEGE, TRAINING
FOOD            SYN, BAR, BISTRO, BREAKFAST, BUFFET, CABARET, CAFE, CANTINA, CAPPUCCINO,    ...,
STORE           SYN, CONVENIENCE, FOOD, GROCER, GROCERY,...,
REFRIGERATION   SYN, APPLIANCE, COLDSTORAGE, FOODLOCKER, FREEZE, FRIDGE, ICE, REFRIGERATION
如果我有一个字符串,比如
MOUNT VU SYN GROWERS
,函数应该返回一个由三个字符串组成的数组,这些字符串是为所有可能的替换生成的:

MOUNTAIN VIEW STORE GROWERS
MOUNTAIN VIEW FOOD GROWERS
MOUNTAIN VIEW REFRIGERATION GROWERS
然后,查询应调用该函数,以以下方式替换同义词和替换:

select replace_synonyms('MOUNT VU SYN GROWERS') from dual;

SELECT name, replace_synonyms(name) corrected_name
FROM   institutions
WHERE  replace_synonyms(name) LIKE replace_synonyms('MOUNT VU SYN GROWERS')
为了解决这个问题,创建了一个函数来替换字符串并提供可能的替换。在那里,我在为数组赋值时遇到问题:

ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "SYSTEM.REPLACE_SYNONYMS", line 35
ORA-06512: at "SYSTEM.REPLACE_SYNONYMS", line 35

35:  array(v_idx):= regexp_replace(
                  p_text, '(^|[^a-z0-9])' || i.text || '($|[^a-z0-9])', 
                  '\1' || i.word || '\2', 1, 0,  'i');
对应于以下值:

array(2):= regexp_replace(
                  'MOUNTAIN VIEW SYN GROWERS', '(^|[^a-z0-9])' || 'SYN' || '($|[^a-z0-9])', 
                  '\1' || 'STORE' || '\2', 1, 0,  'i');
有关具体细节和具体案例,请参阅

如何获取返回用于SQL查询的数组?这可能吗


感谢错误
ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误
原来是与数组中的大小相关的错误。然后增加varray的值修复了问题:

create type array_t is varray(100) of varchar2(4000);
/

请编辑问题并发布a,而不仅仅是第35行。谢谢,请仔细阅读,问题就在这里(我不仅分享了功能,还分享了设置)。