oracle 国家字符集,oracle - ORA-12714:指定了无效的国家字符集 - 堆栈内存溢出

我遇到了oracle数据库问题,我创建了一个存储过程,我想将一个项目ID数组传递给此过程,以便使用“ in”子句根据项目数组选择数据,这是我发现的可用解决方案是创建一个函数并传递一个字符串值,该字符串的所有项目ID均以逗号分隔,此函数将为每个项目ID返回带有一行数据的数据量。当我在select语句中的蟾蜍中尝试该方法时,这种方法很好用,但是当我在存储过程中使用它时,出现一个奇怪的错误

“ ORA-12714:指定了无效的国家字符集”

在搜索了该错误的原因之后,我发现根据此页面,它是该版本的oracle中的一个错误,并且已在10.2.0.4 oracle补丁中对其进行了修复,确切的原因是为返回a的函数声明了一个游标数据表

因为我不可能让在现场生产环境中工作的用户停止服务器来应用更新补丁,所以我想知道是否有任何Oracle专家可以帮助我声明一个游标并返回该游标而不是返回表。

我的Oracle功能,谢谢

create or replace

FUNCTION SplitIDs(

v_List IN VARCHAR2)

RETURN RtnValue_Set PIPELINED

AS

SWV_List VARCHAR2(2000);

v_RtnValue Dt_RtnValue := Dt_RtnValue(NULL);

BEGIN

SWV_List := v_List;

WHILE (instr(SWV_List,',') > 0)

LOOP

FOR RetRow IN

(SELECT ltrim(rtrim(SUBSTR(SWV_List,1,instr(SWV_List,',') -1))) SelectedValue

FROM dual

)

LOOP

v_RtnValue.SelectedValue := RetRow.SelectedValue;

PIPE ROW(v_RtnValue);

END LOOP;

SWV_List := SUBSTR(SWV_List,instr(SWV_List,',')+LENGTH(','),LENGTH(SWV_List));

END LOOP;

FOR RetRow IN

(SELECT ltrim(rtrim(SWV_List)) SelectedValue FROM dual

)

LOOP

v_RtnValue.SelectedValue := RetRow.SelectedValue;

PIPE ROW(v_RtnValue);

END LOOP;

RETURN;

END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值