begin
        for tmpStrTblName in  (SELECT Extend_Info FROM omcdb.Extend_Link_Info) loop
            begin
              EXECUTE IMMEDIATE(tmpStrTblName.Extend_Info); 
            end;
        end loop;
    end;

解决方案 »

  1.   

    麻烦将下EXECUTE IMMEDIATE(tmpStrTblName.Extend_Info)这句什么意思啊????
      

  2.   

    begin
      for tmpStrTblName in (SELECT Extend_Info FROM omcdb.Extend_Link_Info) loop--循环范围是从Extend_Link_Info取所有记录
        begin
          EXECUTE IMMEDIATE (tmpStrTblName.Extend_Info);--执行表Extend_Link_Info中字段Extend_Link_Info内的sql语句,且该SQL语句必须为update,insert,delete或者为带into的select查询语句
        end;
      end loop;
    end;
      

  3.   

    EXECUTE IMMEDIATE 是解析并马上执行动态的SQL语句,显式提交EXECUTE IMMEDIATE(tmpStrTblName.Extend_Info)就是执行小括号中的值
    如:
     declare
      l_depnam varchar2(20) := 'test';
      l_locvarchar2(10) := 'baidu';
      begin
      execute immediate 'insert into dept values(:1, :2, :3)'
      using 60, l_depnam, l_loc;
      commit;
      end;
      

  4.   

    tmpStrTblName.Extend_Info????这个到底算什么?变量名.表的字段名??????
    .算什么??
      

  5.   

    tmpStrTblName.Extend_Info 这个就是 for tmpStrTblName in (SELECT Extend_Info FROM omcdb.Extend_Link_Info  这个循环查询出来的Extend_Inf字段的值。Extend_Inf这个字段的值应该是一条sql。
      

  6.   

    begin
            DECLARE @strSql VARCHAR(4000)
            DECLARE cur CURSOR FOR
            SELECT Extend_Info FROM Extend_Link_Info
            OPEN cur
            FETCH cur INTO @strSql
            WHILE @@fetch_status = 0
            begin
                EXEC(@strSql)--select @strSql
            FETCH cur INTO @strSql
            end        CLOSE cur
            DEALLOCATE CURSOR cur
        end
    怎么改成oracle语法的形式啊??