在oracle中,可以用动态sql,不知道你的后台数据库是否支持动态sql,可以的话,类比一下
V_str varchar(100);
V_str := 'create table '||mytablename||'(.....)';
execute immediate V_str;

解决方案 »

  1.   

    试试可否这样:
        create table (mytablename)(.....)
      
      

  2.   

    正确答案:    create table &mytablename. (.....)
      
      

  3.   

    可以用动态sql,不知道你的后台数据库是否支持动态sql,可以的话,类比一下
    V_str varchar(100);
    V_str := 'create table '||mytablename||'(.....)';
    execute immediate V_str; 
      

  4.   

    上面的回答都不对!!!
    正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。解决方法有两个:
    (1)
      select 1
        use a shar
      go top
        do while .not. eof()
            mytablename = a.field1+'_1'
        create table mytablename(.....)
        select a && 把a表设置为当前工作区。
      skip
    enddo
    (2)
      select 1
        use a shar
      go top
        scan while .not. eof()
            mytablename = a.field1+'_1'
            create table mytablename(.....)
        endscan
     *** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。
      

  5.   

    上面的回答都不对!!!
    正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。
    (1)
      select 1
        use a shar
      go top
        do while .not. eof()
            mytablename = a.field1+'_1'
        create table &mytablename. (.....)
        select a && 把a表设置为当前工作区。
      skip
    enddo
    (2)
      select 1
        use a shar
      go top
        scan while .not. eof()
            mytablename = a.field1+'_1'
            create table &mytablename. (.....)
        endscan
    *** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。 ------------
    呵呵
      

  6.   

    liu7537(一飞):你也有错,尽管你的程序是对的,因为即使考虑了工作区的问题,如果按照zwcboys的原来的代码,生成的表还是只有一个mytablename,因为他声称的表明就是mytablename,而实际上mytablename是存储表名的变量。
    在你的程序中加了一个"&"后结果就对了。但如果使用的是6.0以上版本,MountLion(人不寐)的方法更快。