我在delphi中实现语句
sql.add('select * from :tablename')
param('tablename').asstring:=table_091119;//根据每天改变表名
但是程序报错,不知道在Oracle中类似的传递表名的程序该如何实现?

解决方案 »

  1.   

    建议写个procedure吧
    举个例子:
    SQL> create or replace procedure pro(a varchar2) is
      2  begin
      3  execute immediate 'create or replace view v1 as select * from ' || a;
      4  end;
      5  /
     
    Procedure created
     
    SQL> exec pro('dept');
     
    PL/SQL procedure successfully completed
     
    SQL> select * from v1;
     
    DEPTNO DNAME          LOC
    ------ -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
    希望对你有所帮助
      

  2.   

    --修改表名,将表a该为表b
    create or replace procedure pro1(a varchar2,b varchar2) is
    begin
    execute immediate 'rename ' || a || ' to ' || b;
    end;
      

  3.   

    这主意不错但我觉得还是没有必要
    在delphi中,为什么不这样写呢
    sql.add('select * from '+table_091119) ;
    //根据每天改变表名
      

  4.   

    delphi 不会,但是知道可以用动态SQL解决 execute immediate 
      

  5.   

    一般sql不能动态的构建sql语句,
    只能使用动态sql实现,存储过程,函数等