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;
程序报错:
说是第三行有错误的数据类型,望高手帮助?????

解决方案 »

  1.   

    不能换行,要换行,你得
    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; 
      

  2.   

    另外:
    从使用范围上讲: 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的子集  
      

  3.   

    你这里应该是把BINARY_INTEGER 用在建表语句得原因。
      

  4.   

    v_temp3 binary_integer 
    这个类型改成integer即可
      

  5.   

    BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种类型。
      

  6.   

    v_temp3 binary_integer 
    这个类型改成integer即可