当我写一个存储过程时,需要传入一个变量值,这个变量值是一个表名,但是写存储过程时这个变量值始终不认,想请教大家:如何动态的定义一张表的表名?

解决方案 »

  1.   

    不会吧!你怎么传进去的啊?
    这样不行?
    create or repalce function A(name varchar)
      

  2.   

    create or replace procedure aaa(name in varchar2)
    is
    begin
      select * from ||name||;
    end;
      

  3.   

    我想你的问题是一个动态查询的问题。
    你用的oracle 是什么版本?
    9i及后续版本支持execute immediate ,若是oracle 8i或以下,只能使用 DBMS_SQL包执行DDL语句了。
      

  4.   

    create or replace procedure aaa(name in varchar2)
    is
    begin
    declare
      Sqlstrvarchar2(2000);
    begin
    sqlstr:='create table ||'TEMPTABLE'||
    (
    a        VARCHAR(30),
    b       VARCHAR(50)
    )';execute immediate Sqlstr;
    end;
    end;
      

  5.   

    "失踪的月亮"的答案要考虑ORACLE 的版本问题,以及表空间设置大小否则浪费数据库空间。