将 unicode 文本插入 Oracle 数据库 table

Insert unicode text into Oracle database table

我在 OracleDB 11c 中通过 [=30 创建了一个 table =] 开发者 4.1.1

CREATE TABLE FAC.FAC_CODE_CPQLDN(    
    ID NUMBER(10), 
    CODE NVARCHAR2(100) NOT NULL, 
    NAME NLOB, 
    NOTE NLOB, 
    PARENT_ID NUMBER(10),
    CONSTRAINT FAC_CODE_CPQLDN_PK PRIMARY KEY (ID)
);

之后,我将数据插入到这个table

REM INSERTING into FAC_CODE_CPQLDN
SET DEFINE OFF;
insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID) values (1, 'C1.1', 'Chi phí công ty', '', 0);

但我收到错误

SQL Error: ORA-01465: invalid hex number

请告诉我如何解决它?

在插入 BLOB 字段之前尝试将 varchar2 值转换为 RAW 格式 -

insert into FAC_CODE_CPQLDN(ID, CODE, NAME, NOTE, PARENT_ID) 
values (1, 'C1.1', UTL_RAW.CAST_TO_RAW('Chi phí công ty'), null, 0);

其中大部分是不必要的,您有一个字符集为 AL32UTF8 的数据库,即已经在 unicode 字符集中的数据库 - UTF-8。

如果您将列声明为 VARCHAR2,那么您应该能够只插入数据。

SQL> create table fac_code_cpqldn(name varchar2(100));

Table created.

SQL> insert into fac_code_cpqldn values ('chi phí công ty');

1 row created.

SQL>

NVARCHAR2、NLOB 等比标准数据类型更难处理。为避免疑义;这是一个 11.2 数据库:

SQL> select * from v$version;

BANNER
---------------------------------------------------------
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

你可以从 NLS_DATABASE_PARAMETERS 中找到你的字符集,正如我最初评论的那样:

SQL> select value
  2    from nls_database_parameters
  3   where parameter = 'NLS_CHARACTERSET';

VALUE
-------------------------------------------
AL32UTF8