ORACLE存储过程in关键字使用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,一、问题描述:写了一个存储过程(只取了半截,能说明命题即可)CREATE OR REPLACE PROCEDURE "MONTH_RPT_CENTER_STU_DATA_PROC" (centerId
千家信息网最后更新 2025年11月07日ORACLE存储过程in关键字使用
一、问题描述:
写了一个存储过程(只取了半截,能说明命题即可)

CREATE OR REPLACE PROCEDURE "MONTH_RPT_CENTER_STU_DATA_PROC" (centerIds in VARCHAR2)AS mlockdate date;BEGIN/* 创建人:fengcl 创建时间:2018.1.23 更新人: 更新时间: 参数:中心编号(字符串类型) 功能:调用时,先从中间表删除指定中心的数据,再重新查询插入指定中心的数据到中间表*/--获取月报锁定日期select trunc(sysdate,'mm')+to_number( name) into mlockdate from mdm_dic_option where code='monthReportDate' and dic_code='system_set_001';if mlockdate=add_months(trunc(sysdate,'mm'),-1) and RPT_DATE 在调用这个存储过程的时候,如果参数centerIds只有一个数字,例如:1 可以正常执行,但是如果有多个数字的话,例如:1,2,3,4,5 就回报如下错误,
Procedure execution failed
ORA-01722: 无效数字
ORA-06512: 在 "CRM3TEST.MONTH_RPT_CENTER_STU_DATA_PROC", line 17
ORA-06512: 在 line 1
查询时间: 0.029s
二、解决过程
通过百度发现,存储过程把这个参数作为了一个整体来处理了,并不象普通的sql一样,把他作为一个数组来对待
三、解决方案
百度了一下,发现网上方案挺多,但是我选择了以下的方案,就是自定义一个函数,对这个参数进行处理。
步骤一、新建一个oracle变量:(普通的sql查询窗口既可以创建)
CREATE OR REPLACE TYPE strsplit_type IS TABLE OF VARCHAR2 (4000)步骤二、新建一个函数(这个函数是网上现成的,亲测可用)
CREATE OR REPLACE function strsplit(p_value varchar2, p_split varchar2 := ',')return strsplit_typepipelined is v_idx integer; v_str varchar2(500); v_strs_last varchar2(4000) := p_value;begin loop v_idx := instr(v_strs_last, p_split); exit when v_idx = 0; v_str := substr(v_strs_last, 1, v_idx - 1); v_strs_last := substr(v_strs_last, v_idx + 1); pipe row(v_str); end loop; pipe row(v_strs_last); return;end strsplit;步骤三、改造存储过程(将原先的 in (centerIds) 更改为: in (select * from table (strsplit(centerIds))) )
CREATE OR REPLACE PROCEDURE "MONTH_RPT_CENTER_STU_DATA_PROC" (centerIds in VARCHAR2)AS mlockdate date;BEGIN/* 创建人:fengcl 创建时间:2018.1.23 更新人: 更新时间: 参数:中心编号(字符串类型) 功能:调用时,先从中间表删除指定中心的数据,再重新查询插入指定中心的数据到中间表*/--获取月报锁定日期select trunc(sysdate,'mm')+to_number( name) into mlockdate from mdm_dic_option where code='monthReportDate' and dic_code='system_set_001';if mlockdate=add_months(trunc(sysdate,'mm'),-1) and RPT_DATE 到此,问题解决。
过程
参数
时间
存储
数据
更新
查询
函数
数字
方案
步骤
普通
从中
创建人
功能
字符
字符串
日期
月报
类型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mc服务器推荐做什么
连云港住宿软件开发
数据库的数据结构描述
联系管理员远程服务器异常
魔兽世界tbc火锤服务器
润联网络技术有限公司
医鹿服务器爆满怎么挤进去
贵州资金管理软件开发
融媒体网络安全处置流程
数据库技术及应用第一版王成良
我的世界和朋友一起玩的服务器
机房集中管理服务器
汕头分布式服务器价格
可以远程内网服务器的软件
服务器ip安全管理
互联网科技小程序
怎样清除掉网贷上面的数据库
数据库备份批处理命令
文明重启有哪些服务器
用微信小程序开发数据库应用
标志物数据库
网络安全有什么影响
投标软件开发合理化建议
网络安全现场悬挂条幅
.net 服务端软件开发
北京职业软件开发erp
人间地狱服务器怎么收藏
数据库软件特点
天源迪科与华为数据库
初一学生网络安全主题征文