在oracle8.0.5以上版本运行:CREATE OR REPLACE PROCEDURE "CREATETMYABLE" (
   createtablesql IN   VARCHAR2
   execresult     OUT  VARCHAR2
)
AS
BEGIN
      EXECUTE IMMEDIATE createtablesql;
      COMMIT;
      execresult := 'T';
EXCEPTION
   WHEN OTHERS
   THEN
      ROLLBACK;
      execresult := 'F' || SQLCODE;
END "CREATEMYTABLE";
/

解决方案 »

  1.   

    函数和过程都是一样,最主要是能得到结果
    CREATE OR REPLACE FUNCTION ALTER_CONS 
    (I_table VARCHAR2)-----默认是传进参数
       RETURN INTEGER  
    IS
    I_table  VARCHAR2(100);
    C_SQL  NUMBER;
    RET    NUMBER;
    P_ERROR INTEGER;
    BEGIN
    P_ERROR := 0;
    C_SQL := DBMS_SQL.OPEN_CURSOR;
    BEGIN
               DBMS_SQL.PARSE( C_SQL, I_table , DBMS_SQL.v7 ) ;
     ret := DBMS_SQL.EXECUTE( C_SQL ) ;
    EXCEPTION
              WHEN OTHERS THEN
                     P_ERROR := P_ERROR + 1; 
    END;
    END LOOP;
    DBMS_SQL.CLOSE_CURSOR(C_SQL);
    RETURN P_ERROR;
    END ALTER_CONS;
    /
    SHOW ERROR
      

  2.   

    随便写的一个函数,修改了一下
    CREATE OR REPLACE FUNCTION ALTER_TABLE
    (I_table VARCHAR2)-----默认是传进参数
       RETURN INTEGER  
    IS
    C_SQL  NUMBER;
    RET    NUMBER;
    P_ERROR INTEGER;
    BEGIN
    P_ERROR := 0;
    C_SQL := DBMS_SQL.OPEN_CURSOR;
    BEGIN
               DBMS_SQL.PARSE( C_SQL, I_table , DBMS_SQL.v7 ) ;
            ret := DBMS_SQL.EXECUTE( C_SQL ) ;
    EXCEPTION
              WHEN OTHERS THEN
                     P_ERROR := P_ERROR + 1; 
    END;
    DBMS_SQL.CLOSE_CURSOR(C_SQL);
    RETURN P_ERROR;
    END ALTER_TABLE;
    /
    SHOW ERROR
      

  3.   

    LGQDUCKY(飘)老兄的函数运行后是1?
    你写的是运行什么的函数?