在create table v_ADMIN_TAB as select * from POI_CHINA where poi_province = v_PROVINCE_ID order by display desc; 中,红色字 v_ADMIN_TAB 是变量,不知道在此语句中该如何引用?
请高手指点,谢谢!BEGIN  DECLARE v_PROVINCE_ID varchar(100);
  DECLARE v_ADMIN_TAB varchar(100);
  
  DECLARE cur_poi_name CURSOR FOR
         SELECT PROVINCE_ID,POI_ADMIN_TAB FROM PROVINCE_NAME;
  OPEN cur_poi_name;
  cursor_loop:LOOP 
       FETCH cur_poi_name INTO v_PROVINCE_ID,v_ADMIN_TAB;
       #使用fetch到的值创建多个表
       create table v_ADMIN_TAB as select * from POI_CHINA where poi_province = v_PROVINCE_ID order by display desc;  #v_ADMIN_TAB 为变量,不知该如何引用
         
  END LOOP cursor_loop;
  CLOSE cur_poi_name;END

解决方案 »

  1.   

    set @asql=concat('create table ',v_ADMIN_TAB,' as select * from POI_CHINA where poi_province = v_PROVINCE_ID order by display desc');
    prepare dd from @asql;
    execute dd;
      

  2.   

    这需要动态执行该语句..
    create table v_ADMIN_TAB as select * from POI_CHINA where poi_province = v_PROVINCE_ID order by display desc; 
    改成set @str=concat('create table ',v_ADMIN_TAB,' as select * from POI_CHINA where poi_province = v_PROVINCE_ID order by display desc;');
    prepare dmt from @str;
    execute dmt; 
    、试试~
      

  3.   

    动态语句使用prepare / execute /