我将运行如下代码块:
CREATE OR REPLACE FUNCTION func_name (START_DATE NUMBER,END_DATE NUMBER, NAME clob)
.
.
.
select * from table_name
where name_desc in NAME
.
.
.
END;
其中,它的目的是创建一个其输入参数之一为clob数据类型的函数。但通过执行我的代码,我得到以下错误:
ora-01704:字符串文字太长
我在网上搜索了一下,也搜索了一些问题,但没有得到任何结果。
你能帮我解决这个问题吗?
1条答案
按热度按时间pcrecxhr1#
我相信我理解你想要达到的目标。根据你的意见
IN
这是错误的。IN
需要select中的文本列表或值列表,但clob值两者都不是,它只是一个长字符串,需要先处理它才能在中使用SELECT
就像你在评论中提到的。使用以分隔的名称列表处理clob
,
您可以在clob中找到第一个逗号,并从clob的开头提取值,直到将第一个分隔符和找到的值放入集合(分隔符从C中删除,值被修剪,这可能是可选的,因为我不确定您的输入到底是什么样的)。接下来,从clob的开始处删除find值,并重复此操作,直到此clob中没有要处理的内容。一旦在集合中有了值列表,就可以将其用作SELECT
在你原来的SELECT
.请尝试以下示例: