假设有这样几个变量:
a='ID',b='name',c='NUMBER',d='VARCHAR'
想要创建这样的一个表,表的字段名是变量a和b的值,对应的数据类型依次是变量c和d的值
请问如何写这样的存储过程或函数呢,要求参数是a,b,c,d这四个

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE CREATE_TABLE(a varchar2,b varchar2,c varchar2,d varchar2) IS
    v_sql varchar2(1000);
    begin
      v_sql := 'create table table_name
                ('||a||' '||b||','
                  ||c||' '||d||')';
      execute immediate v_sql;
    end; 差不多就这样吧
      

  2.   

    谢谢chenqingyu,现在还有一个问题是,我要创建的表的字段个数是不固定的,这次是2个,下次可能是3个或4个,也就是说存储过程的参数个数是变化的,能不能写一个通用的过程把这些情况都考虑进去呢?
      

  3.   

    那就用数组
    CREATE TYPE ColList IS TABLE OF VARCHAR2(2000);CREATE OR REPLACE PROCEDURE CREATE_TABLE (
      Column_Name in ColList
    , Column_Type in ColList
    )
    IS
    .....
       FOR i IN 1..Column_Name.COUNT LOOP
          ... Column_Name(i) ...
       END LOOP;
    ....
    END CREATE_TABLE;
    /