declare 
v_str varchar2(5000) ;
v_date date;
begin
v_date:=to_date('20080611','yyyymmdd');
v_str:='create table tb_375_d_fcf_zz_qd as 
select serv_number,production_id from 
masa375.TB_DW_PD_USER_FUNCTION_CUR where deal_date = :1  and production_id in (''BPA1'',''BPA16'',''BPA24'',''BPA25'',''BPA26'',''BPA231'',''BPA232'',''BPA233'',''BPA21'',''BPA117'',''BPA64'')' ;
execute immediate v_str  using v_date;
end;
执行后报错
ERROR 位于第 1 行:
ORA-01027: bind variables not allowed for data definition operations
ORA-06512: at line 9
 请高数指出问题所在,谢谢!

解决方案 »

  1.   

    varchar2最大就支持4000,1楼的说的没错
      

  2.   

    捆绑变量不能用在ddl语句上  where deal_date = :1 改为 where deal_date = v_date 
      

  3.   

    The maximum width of a VARCHAR2 database column is 4000 bytes
      

  4.   

    varchar2最大是4000不假,但是如果定义成5000也是能用的,它会默认按照4000来算。
    只要字符的实际数量不超过4000是没有问题的。
    我还是同意三楼的意见,是赋值的时候出错了!
      

  5.   

    varchar2的字段最大就支持4000
    变量是32767吧
      

  6.   

    谢谢各位,小弟初学ORACLE 以后还望多多请教!
      

  7.   

    v_str varchar2(5000) ; 4000 好像是一个临界值,问题应该在这里
      

  8.   

    v_str varchar2(5000) ;
    不是这里的问题 定义时无所谓的 但是使用最大只能4000同意3楼
      

  9.   

     where deal_date = :1  这种写法不对 v_date 定义何用 可以更改
      where deal_date = v_date