SQL Server:动态SQL语句Oracle:动态PL/SQL语句

解决方案 »

  1.   

    libin_ftsafe(子陌红尘)
    请问能用Oracle:动态PL/SQL语句搞定吗?
    请指点啊!
      

  2.   

    CREATE TABLE EMP( start_year VARCHAR2(8))
    DELETE FROM EMP
    INSERT INTO EMP VALUES('19800101');
    INSERT INTO EMP VALUES('19800101');
    INSERT INTO EMP VALUES('19810101');
    INSERT INTO EMP VALUES('19810101');
    INSERT INTO EMP VALUES('19820101');
    INSERT INTO EMP VALUES('19820101');
    INSERT INTO EMP VALUES('19830101');
    INSERT INTO EMP VALUES('19830101');
    INSERT INTO EMP VALUES('19830101');
    INSERT INTO EMP VALUES('19830101');
    INSERT INTO EMP VALUES('19810101');
    INSERT INTO EMP VALUES('19820101');
    INSERT INTO EMP VALUES('19800101');
    --测试
    declare col1 EMP.start_year%type;        --定义类型
    sqlstr varchar2(8000);
    cursor c_try is select distinct substr(start_year,1,4) from EMP;
    begin
        sqlstr:='';
        open c_try;
        loop
        fetch c_try into col1;
        exit when c_try%notfound;
        sqlstr:=sqlstr||', sum(decode(substr(start_year,1,4),'''||col1||''',1,0)) as emp_'||col1;
        exit when c_try%notfound;
        end loop;
        close c_try;
        sqlstr:='create table tt as select count(*) as sum1'||sqlstr||' from EMP';
        --tt为刚创建的一个保存结果的表
        execute immediate sqlstr;
    end;--执行
    select * from tt;
      

  3.   

    谢谢您!libin_ftsafe(子陌红尘)