我通过 SQL Developer 4.1.1
在 OracleDB 11c 中创建一个表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)
);
之后,我将数据插入此表
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
请告诉我如何解决?
答案 0 :(得分:2)
尝试在插入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);
答案 1 :(得分:2)
大部分内容都是不必要的,你有一个带有字符集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