在做一个数据字典时--数据字典表
CREATE TABLE ZDBA01A(
ZDBA01A010 VARCHAR(10) NOT NULL, --FIELD_CODE,字段代码
ZDBA01A020 VARCHAR(100), --FIELD_CHIN,汉字名
ZDBA01A030 VARCHAR(30), --FIELD_NAME,数据项名
ZDBA01A040 VARCHAR(10), --FIELD_TYPE,类型
ZDBA01A050 NUMBER(4,0), --FIELD_LEN, 长度
ZDBA01A060 NUMBER(2,0), --FIELD_DEC,小数位
ZDBA01A070 VARCHAR(20), --U_NAME,单位
ZDBA01A080 VARCHAR(50), --FIELD_DEFA,缺省值
ZDBA01A090 VARCHAR(1), --FIELD_NULL,空值 字段值是否允许为空值
ZDBA01A100 VARCHAR(200), --FIELD_CAPT,字段说明
PRIMARY KEY(ZDBA01A010)
);--对字典表进行批量插入时
-- a.data_default 值为long型,无法转换为varchar2类型
insert into ZDBA01A
(ZDBA01A010,
ZDBA01A040,
ZDBA01A050,
ZDBA01A060,
ZDBA01A080,
ZDBA01A090,
ZDBA01A100)
(select a.column_name,
a.data_type,
a.data_length,
a.data_scale,
null, --a.data_default
a.nullable,
b.comments
from user_tab_cols a, user_col_comments b
where a.table_name = b.table_name
and a.column_name = b.column_name
and a.table_name = tableName);我知道可以用 declare
userStr varchar2(50);select utc.data_default
into userStr
from user_tab_cols utc
--表名
where utc.table_name = TABLENAME
--字段名
and utc.column_name = COLUMNNAME;
然后再 substr 将 userStr insert into 到 字典表 里面,这样只能一条一条的查询,转换再插入,可是我是批量插入!求批量插入时进行long ->varchar2转换的解决方法。
CREATE TABLE ZDBA01A(
ZDBA01A010 VARCHAR(10) NOT NULL, --FIELD_CODE,字段代码
ZDBA01A020 VARCHAR(100), --FIELD_CHIN,汉字名
ZDBA01A030 VARCHAR(30), --FIELD_NAME,数据项名
ZDBA01A040 VARCHAR(10), --FIELD_TYPE,类型
ZDBA01A050 NUMBER(4,0), --FIELD_LEN, 长度
ZDBA01A060 NUMBER(2,0), --FIELD_DEC,小数位
ZDBA01A070 VARCHAR(20), --U_NAME,单位
ZDBA01A080 VARCHAR(50), --FIELD_DEFA,缺省值
ZDBA01A090 VARCHAR(1), --FIELD_NULL,空值 字段值是否允许为空值
ZDBA01A100 VARCHAR(200), --FIELD_CAPT,字段说明
PRIMARY KEY(ZDBA01A010)
);--对字典表进行批量插入时
-- a.data_default 值为long型,无法转换为varchar2类型
insert into ZDBA01A
(ZDBA01A010,
ZDBA01A040,
ZDBA01A050,
ZDBA01A060,
ZDBA01A080,
ZDBA01A090,
ZDBA01A100)
(select a.column_name,
a.data_type,
a.data_length,
a.data_scale,
null, --a.data_default
a.nullable,
b.comments
from user_tab_cols a, user_col_comments b
where a.table_name = b.table_name
and a.column_name = b.column_name
and a.table_name = tableName);我知道可以用 declare
userStr varchar2(50);select utc.data_default
into userStr
from user_tab_cols utc
--表名
where utc.table_name = TABLENAME
--字段名
and utc.column_name = COLUMNNAME;
然后再 substr 将 userStr insert into 到 字典表 里面,这样只能一条一条的查询,转换再插入,可是我是批量插入!求批量插入时进行long ->varchar2转换的解决方法。
userStr varchar2(50);select utc.data_default
into userStr
from user_tab_cols utc
--表名
where utc.table_name = TABLENAME
--字段名
and utc.column_name = COLUMNNAME;你将这代码写成一个FUNCTION,,批量插入的时候,调用这个FUNCTION试试呢ORACLE里 LONG型和其它类型好象不能直接互转的
columnName varchar)
return varchar as returnValue varchar2(50);begin
select utc.data_default
into returnValue
from user_tab_cols utc
where utc.table_name = tableName
and utc.column_name = columnName;
return returnValue;
end long_to_varchar;