当前位置: 首页 > 知识库问答 >
问题:

将Oracle CLOB数据转换为C#中的字符串

叶鸿煊
2023-03-14
select TO_CLOB(BLOB) FROM TestBlobData where BSIZE=5000
DataTable dataTable = RunQuery(QueryMentionedAbove);
var str = dataTable.Rows[0]["BLOB"].ToString();

请帮我把CLOB转换成C#代码中的字符串。

共有1个答案

强烨
2023-03-14

您可以使用以下函数(与此答案相反):

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(VALUE) |
| :------------------ |
| abcdefg             |
 类似资料:
  • 我已经扫描ABCDEFGHIJK与fscanf成一个char数组[26]。然后我得到了ABCDEFGHIJK使用for进入另一个数组[11]。现在我需要一个ABCDEFGHIJK. mp4数组[15],以便将该文件名输入重命名函数。 除了printf、scanf之外,我对C编程知之甚少。 上面的代码似乎有效,但我想知道是否有更简单的方法(特别是对于更大的阵列)? 澄清:我有一个txt文件,格式是包

  • 我想优化我的代码,避免错误,我有这个功能,但我认为我可以改善和避免内存问题。 该函数的思想是接收这种样式的字符串“0123456789”并将其传递给0x01、0x23、0x45、...在无符号字符数组中。任何提示,良好的实践或改进将是非常有用的。 用法是这样的: 在函数缓冲区中结束如下:

  • 我展示了一个包含JSON的数组,并直接用超文本标记语言展示了这个数组,在这里你可以找到。它给NaN作为输出。 这是我的超文本标记语言:

  • 我有一个pandas数据框架,其中混合了数据类型(DType),我希望将其转换为numpy结构化数组(或记录数组,在本例中基本相同)。对于纯数字数据帧,使用方法很容易做到这一点。我还需要将pandas列的数据类型转换为字符串而不是对象,以便使用numpy方法,该方法将数字和字符串输出到二进制文件,但不会输出对象。 简而言之,我需要将带有的panda列转换为字符串或unicode数据类型的numpy

  • 我有一根绳子, 我想把它转换成一个字节数组。 有人能在这方面引导我吗?我尝试了以下代码,但我得到了ASCII中的数据。我不想那样。

  • 问题内容: 我从Met Office Datapoint API读取JSON时遇到NSJSONSerialization问题。 我收到以下错误 我已经检查并认为这是根据字符位置的冒犯行 根据我尝试过的多个验证器,JSON本身似乎是有效的,并且我希望它也来自大型组织(如Met Office)。 NSJSONSerialization是否不能与’ó’之类的字符配合使用? 如果不是,我该如何更改编码类型