表                     数据
test(id,str)        1,"select * from stu"  stu(stuid,name)     1,"小张"
                    2,"小王"
请问在Oracle中如何通过这语句"select str form test where id=1"来查询表stu的所有数据还请高手帮帮忙阿~

解决方案 »

  1.   

    用动态SQL拼接起来
    select str || ' where id = ' || id from test
          where id = 1;
    然后,再执行这个动态SQL就好了。能想到的,用PL/SQL来实现了。
      

  2.   

    declare @sql nvarchar(4000)
    select @sql =  [str] from test where id=1
    exec(@sql)在SQL SERVER的查询分析器中 上面的语句就可以查出所有的stu数据
    请问在oracle中 如何来做呢
      

  3.   

    execute immediate动态可以执行,但是执行完得into到变量里吧。
    不然,会报错的。
      

  4.   


    into到变量中之后,应该如何从这个变量中取值呢?
      

  5.   

    参考代码:CREATE OR REPLACE PROCEDURE DynamicSQL IS
    DECLARE
        vCommand VARCHAR2(100);
        -- 定义数据类型
        TYPE TypeA IS TABLE OF A%ROWTYPE INDEX BY BINARY_INTEGER;
        vAllRecord TypeA;
        i BINARY_INTEGER := 0;
    BEGIN
        --获得SQL语句
        SELECT Command INTO vCommand FROM SqlCommand WHERE ID = '1';
        EXECUTE IMMEDIATE vCommand INTO vAllRecord;
        -- 对vAllRecord进行循环,打印输出
    END DynamicSQL;