c# - 在c#中将Oracle CLOB数据转换为字符串
问题描述
我正在尝试运行以下查询,该查询在 C# 中返回一个 DataTable 对象。
select TO_CLOB(BLOB) FROM TestBlobData where BSIZE=5000
当我尝试从数据表对象中提取值时,会看到一个垃圾值。
DataTable dataTable = RunQuery(QueryMentionedAbove);
var str = dataTable.Rows[0]["BLOB"].ToString();
当我查看Str时,我看不到转换后的字符串。BLOB 实际上是一个 JSON 字符串。我不能使用 TO_CHAR 或 TO_NCHAR,因为我的 blob 大小将大于 4000。我的期望是看到我将其存储为 BLOB 的 JSON 字符串。
请帮助我在 C# 代码中将 CLOB 转换为字符串。
解决方案
您可以使用该功能(与此答案相反):
CREATE FUNCTION blob_to_clob(
value IN BLOB,
charset_id IN INTEGER DEFAULT DBMS_LOB.DEFAULT_CSID,
error_on_warning IN NUMBER DEFAULT 0
) RETURN CLOB
IS
result CLOB;
dest_offset INTEGER := 1;
src_offset INTEGER := 1;
lang_context INTEGER := DBMS_LOB.DEFAULT_LANG_CTX;
warning INTEGER;
warning_msg VARCHAR2(50);
BEGIN
DBMS_LOB.CreateTemporary(
lob_loc => result,
cache => TRUE
);
DBMS_LOB.CONVERTTOCLOB(
dest_lob => result,
src_blob => value,
amount => LENGTH( value ),
dest_offset => dest_offset,
src_offset => src_offset,
blob_csid => charset_id,
lang_context => lang_context,
warning => warning
);
IF warning != DBMS_LOB.NO_WARNING THEN
IF warning = DBMS_LOB.WARN_INCONVERTIBLE_CHAR THEN
warning_msg := 'Warning: Inconvertible character.';
ELSE
warning_msg := 'Warning: (' || warning || ') during BLOB conversion.';
END IF;
IF error_on_warning = 0 THEN
DBMS_OUTPUT.PUT_LINE( warning_msg );
ELSE
RAISE_APPLICATION_ERROR(
-20567, -- random value between -20000 and -20999
warning_msg
);
END IF;
END IF;
RETURN result;
END blob_to_clob;
/
然后,如果您具有此答案和数据中的CLOB_TO_BLOB
功能:
CREATE TABLE table_name ( value BLOB );
INSERT INTO table_name (value ) VALUES ( CLOB_TO_BLOB( 'abcdefg' ) );
然后:
SELECT BLOB_TO_CLOB( value ) FROM table_name;
输出:
| BLOB_TO_CLOB(值) | | :----------------- | | abcdefg |
db<>在这里摆弄
推荐阅读
- php - 输入'列表
- >' 不是类型转换中“String”类型的子类型)
- spring - 无法从网关访问 spring boot admin
- substrate - 如何在基板中编写具有自定义逻辑的视图功能?
- javascript - 最大化事件的使用
- flutter - 参数类型'Map
' 不能分配给参数类型 'Map ' - php - 如何实现else显示简单文本回显php
- mongodb - 将 mongodb-1.2.2 与 Rocket-0.5.0-rc.1 一起使用会导致异步运行时不兼容
- angular10 - 单击添加按钮后,如何将我的文本区域的值设为空白,您能帮帮我吗?
- python - 在 django 中在 POST 请求和 GET 之间传输数据时出现问题
- html - 打字机对标题标签的影响