set serveroutput on;
begin
if(2>1) then
execute immediate 'create table AAT(
v_temp1 varchar2(50) primary key,
v_temp2 number(5,3),
v_temp3 binary_integer
)';
end if;
commit;
end;
程序报错:
说是第三行有错误的数据类型,望高手帮助?????
begin
if(2>1) then
execute immediate 'create table AAT(
v_temp1 varchar2(50) primary key,
v_temp2 number(5,3),
v_temp3 binary_integer
)';
end if;
commit;
end;
程序报错:
说是第三行有错误的数据类型,望高手帮助?????
declare
v_sql varchar2(2000);
begin
if(2>1) then
v_sql:='create table AAT('
v_sql:=v_sql||'v_temp1 varchar2(50) primary key,'
v_sql:=v_sql||'v_temp2 number(5,3),'
v_sql:=v_sql||'v_temp3 binary_integer'
v_sql:=v_sql||')';
execute immediate v_sql;
end if;
commit;
end;
从使用范围上讲: INTEGER 是一个SQL数据类型,可以用在定义表时,也可以用在PL/SQL中。 BINARY_INTEGER 是一个PL/SQL数据类型,只能用在PL/SQL中。
从表示内容上讲: INTEGER是ORACLE的NUMBER类型的子类型,可以简写为INT,是为了兼容ANSI/ISO和IBM的数据类型而定义的。它的存储范围很大可以达精度为38位,数量级为127位的整数(包括整数与负数)。当我们定义个一个列的类型为INTEGER时,实际上数据库自动将该列的类型转换为NUMBER(38). BINARY_INTEGER 表示一个有符号整数,表示的范围为-2的31次方到2的31次方它有几个子类型,如NATURAL 表示自然数,POSITIVE表示正整数。从表示的范围来讲,BINARY_INTEGER是INTEGER的子集
这个类型改成integer即可
这个类型改成integer即可