`
Fangrn
  • 浏览: 818125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle function中如何处理长度超过varchar2存储长度的字符串

阅读更多

比如有如下函数,拼接字符串:

CREATE OR REPLACE Function translate_order_right_user_fun (
activity_instance_id_ in varchar2 default ''
) RETURN varchar2 IS
return_value varchar2(4000):='';


str_length number;
workitem_tmp wfs_workitem%ROWTYPE;
CURSOR mycur is select * from wfs_workitem w where w.activity_instance_id=activity_instance_id_ order by w.assit_order;
BEGIN

open mycur;
LOOP
FETCH mycur INTO workitem_tmp;
EXIT WHEN mycur%NOTFOUND;
return_value:=(return_value||('{WORKITEM_ID:"'||workitem_tmp.WORKITEM_ID|| '",USER_ID:"'||workitem_tmp.user_id ||'",FINISH_FLAG:"'||workitem_tmp.finish_flag|| '",ASSIT_ORDER:"'||workitem_tmp.assit_order||'"},'));
END LOOP;
CLOSE mycur;
SELECT length(return_value) into str_length FROM DUAL;
select substr(return_value,1,str_length-1) into return_value from dual;
RETURN return_value;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error   ---------------' || sqlcode ||   '     :       ' || sqlerrm);
END;

 在数据量小的时候没有问题,但是如果拼接出来的字符串超过了varchar2存储的长度之后,函数就会报错,怎么办,其实在这我们可以用clob类型,直接使用!

CREATE OR REPLACE Function translate_order_right_user_fun (
activity_instance_id_ in varchar2 default ''
) RETURN clob IS
return_value clob:='';


str_length number;
workitem_tmp wfs_workitem%ROWTYPE;
CURSOR mycur is select * from wfs_workitem w where w.activity_instance_id=activity_instance_id_ order by w.assit_order;
BEGIN

open mycur;
LOOP
FETCH mycur INTO workitem_tmp;
EXIT WHEN mycur%NOTFOUND;
return_value:=(return_value||('{WORKITEM_ID:"'||workitem_tmp.WORKITEM_ID|| '",USER_ID:"'||workitem_tmp.user_id ||'",FINISH_FLAG:"'||workitem_tmp.finish_flag|| '",ASSIT_ORDER:"'||workitem_tmp.assit_order||'"},'));
END LOOP;
CLOSE mycur;
SELECT length(return_value) into str_length FROM DUAL;
select substr(return_value,1,str_length-1) into return_value from dual;
RETURN return_value;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error   ---------------' || sqlcode ||   '     :       ' || sqlerrm);
END;

 执行发现没有任何问题了。

 

 

分享到:
评论

相关推荐

    Oracle接收长度大于4000的字符串

    本文将详细介绍如何在.NET环境中处理和传递长度超过4000个字符的字符串至Oracle数据库。 #### 1. 使用Blob类型存储长字符串 对于长度远超4000个字符的数据,推荐使用`BLOB`类型。BLOB类型可以存储非常大的二进制...

    oracle 如何判断一个字符串能否转换为数字?

    ### Oracle 判断字符串是否能转换为数字的方法 在Oracle数据库中,我们经常需要处理各种数据类型之间的转换。尤其是在处理字符型数据时,有时我们需要判断一个字符串是否能够被成功地转换成数字类型。与SQL Server...

    oracle分隔字符串函数

    在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助开发者轻松地完成这些任务。本文将详细介绍如何在 Oracle 中实现字符串分隔...

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能的优点是可以灵活地处理不同的分隔符和字符串长度。同时,这个函数也可以与其他 Oracle 函数和操作符结合使用,以实现更加复杂的数据处理任务。 在实际应用中,Oracle 中实现 Split ...

    plsql分割字符串

    自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割字符串的函数,它接受两个参数:待分割的字符串`STRING`和用作分隔符的子字符串`SUBSTRING`,返回一个`VARCHAR2`类型的数组,其中包含了分割后...

    如何实现Oracle中字符串分隔.pdf

    在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据处理和分析中。本文将详细介绍如何在Oracle中实现字符串分隔,以及提供一个实用的面向对象的解决方案。 在Oracle中,字符串分隔通常涉及到将一个长字符...

    oracle function 返回结果集

    这里,`Ns_IIS_GetPeriod_table`定义了一个对象类型,它包含三个属性:描述字符串`dscp`、起始日期`firstDay`和结束日期`lastDay`。接着,我们定义了`Ns_IIS_GetPeriod_type`类型,这是一个由`Ns_IIS_GetPeriod_...

    oracle_split_函数_返回数组

    在Oracle数据库中,由于内置函数不直接支持像Java中的`split`那样拆分字符串并返回数组,因此开发者需要自定义函数来实现这一功能。这里提到的两种方法都是为了解决这个问题,即根据指定的分隔符将字符串拆分为一个...

    oracle-function--api.zip_oracle_oracle API_oracle sql api

    本资料“oracle-function--api.zip”包含了Oracle数据库中的一些核心API和SQL函数,特别是针对字符串、日期和数字类型的处理,对于Oracle开发人员来说极具参考价值。 一、Oracle SQL API Oracle SQL API是Oracle...

    plsql中的字符串分割.txt

    - 将每个子字符串存储到一个数组或集合中,以便后续处理。 ### 示例代码 下面是一个简化的示例代码,用于演示如何在PL/SQL中实现字符串分割功能: ```plsql CREATE OR REPLACE FUNCTION split_string(p_input_...

    oracle split函数

    在Oracle数据库中,并没有内置的split函数来处理字符串的分割操作。然而,在实际应用中,经常需要将一个包含多个值的字符串按照指定的分隔符进行拆分,转换为表格式的数据,以便进行进一步的处理或查询。为此,可以...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    oracle function 实现七种银行企业帐对帐

    根据提供的信息,我们可以总结出以下有关Oracle Function在实现银行企业账对账中的应用与细节。 ### Oracle Function在银行企业账对账中的应用 #### 1. **Function Get_RevokeRecImport 的实现** 此函数用于处理...

    Oracle中金额大小写转换

    总的来说,Oracle中进行金额大小写的转换涉及到对数字字符串的处理、自定义函数的编写以及对汉字数字的映射理解。虽然Oracle本身不直接提供这样的功能,但我们可以通过PL/SQL编程来实现。希望这个示例能帮助你理解并...

    Oracle自定义脱敏函数的代码详解

    函数内部定义了几个变量,如`V_STR_LENGTH`用于存储输入字符串的长度,`V_NAME`用于存储脱敏后的字符串,`V_N`用于计数,`V_HID`用于构建星号(*)脱敏的部分,`V_SQL`用于执行SQL查询,以及`V_NUM_FLAG`用于判断是否...

    oracle 存储过程 函数 dblink

    - `protocol://remote_host:port/service_name`:远程数据库的连接字符串。 #### 八、使用DBLink进行跨库操作 一旦建立了DBLink,就可以在本地数据库中像操作本地表一样操作远程数据库中的表。例如,可以通过以下...

    Oracle 验证是否是日期

    1. **输入参数**:`v_tjrq VARCHAR2`,这是一个待验证的字符串,通常代表日期。 2. **返回值类型**:`NUMBER`,返回1表示输入字符串可以被解析成有效日期,返回0表示无效。 3. **逻辑流程**: - **空值检查**:...

    聚集函数(自定义分隔符拼接字符串)

    在Oracle数据库中,有时我们需要将多个字符串连接成一个单一的字符串,这在处理报告或聚合数据时非常常见。Oracle提供了一些内置的聚集函数,如`LISTAGG`,但它们可能无法满足所有需求,比如在特定场景下需要自定义...

    Oracle截取JSON字符串内容的方法

    在Oracle数据库中,处理JSON数据已经成为日常操作的一部分,特别是在存储和检索结构化和半结构化数据时。本文将深入探讨如何使用自定义函数来截取JSON字符串中的特定内容,这在处理复杂的JSON数据时非常有用。 ...

Global site tag (gtag.js) - Google Analytics