可以使用游标实现,这样就可以使用变量了;或者,直接把要执行的语句写成变量,然后用“execute immediate strsql;”来运行

解决方案 »

  1.   

    strsql := 'select count(*) from ' || tablename;
    execute immediate strsql into a;
      

  2.   

    用动态SQLCREATE OR REPLACE PROCEDURE Test1 IS
      v_Sql         VARCHAR2(200); 
      Cursor_create VARCHAR2(100);
      Result        NUMBER;
    BEGIN      
          v_Sql := '
                CREATE TABLE T1
                (
                 A VARCHAR2(200)
                )
                ';
          
          cursor_create := dbms_sql.open_cursor;
          DBMS_SQL.PARSE(cursor_create, v_SQL,dbms_sql.native);
          Result := dbms_sql.EXECUTE(cursor_create);
          DBMS_SQL.close_cursor(cursor_create);