【问题标题】:How can I insert into a BLOB column from an insert statement in sqldeveloper?如何从 sqldeveloper 中的插入语句插入 BLOB 列?
【发布时间】:2011-11-21 07:22:19
【问题描述】:

是否可以使用 sqldeveloper 在 oracle 中插入BLOB 列?

即类似:

insert into mytable(id, myblob) values (1,'some magic here');

【问题讨论】:

    标签: oracle blob oracle-sqldeveloper


    【解决方案1】:

    要将VARCHAR2 插入BLOB 列,您可以依赖函数utl_raw.cast_to_raw 如下:

    insert into mytable(id, myblob) values (1, utl_raw.cast_to_raw('some magic here'));
    

    它会将您的输入 VARCHAR2 转换为 RAW 数据类型而不修改其内容,然后它将结果插入您的 BLOB 列。

    更多关于函数utl_raw.cast_to_raw的细节

    【讨论】:

    • UTL_RAW.CAST_TO_RAW 限制为 2000 个字符。如何插入一个大于 2000 个字符的值? (用于甲骨文)
    • 你也可以使用to_clob函数。检查这个答案:stackoverflow.com/a/68808988/1610853
    【解决方案2】:

    是的,有可能,例如使用从 RAW 到 BLOB 的隐式转换:

    insert into blob_fun values(1, hextoraw('453d7a34'));
    

    453d7a34是一串十六进制值,先显式转换为RAW数据类型,然后插入BLOB列。结果是一个 4 字节的 BLOB 值。

    【讨论】:

    • 不幸的是,如果 BLOB 大于 2000 字节,这将不起作用 - 因为 Oracle 中的限制是 char 常量不能超过 4000 个字符。
    【解决方案3】:
    1. 插入 mytable(id, myblob) 值 (1,EMPTY_BLOB);
    2. SELECT * FROM mytable mt where mt.id=1 for update
    3. 单击锁定图标解锁以进行编辑
    4. 单击 BLOB 旁边的 ... 进行编辑
    5. 选择相应的选项卡并点击左上角的打开。
    6. 单击“确定”并提交更改。

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 2012-02-11
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2022-11-20
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多