现有一个问题希望得到大家的帮助:
有字符串类型的SQL语句,例如:string sqlstr = "select * from table where ...ordre by ..."如何在oracle数据库中执行这个变量的中的SQL语句,并且有结果集返回
用这样的方法
declare sqlstmt varchar2(500)
 
begin
 
sqlstmt := 'select * from table where ...ordre by ...';
 
execute immediate sqlstmt;
 
end;
发现没有结果集返回。类似的处理在MSSQL中可以用EXECUTE关键字实现。请问在oracle中如何解决。Oracle

解决方案 »

  1.   

    execute immediate sqlstmt into 某个变量;
    比如:
    [code=sql][/DECLARE v VARCHAR2(20);
    BEGIN
    EXECUTE IMMEDIATE 'select 12 from dual' INTO v;
    dbms_output.put_line(v);
    END;code]
      

  2.   

    DECLARE v VARCHAR2(20);
    BEGIN
    EXECUTE IMMEDIATE 'select 12 from dual' INTO v;
    dbms_output.put_line(v);
    END;
      

  3.   

    oracle 不同于sqlserver。要直接返回select的结果集,比较麻烦。即使返回了,显示也不会很好看。
    楼上已经告诉了方法
      

  4.   

    SQL错误[6550][65000]: ORA-06550: ]PLS-00103:出现符号 "end-of-file"在需要下列之一时<an identifier> <a double-quoted delimited-identifier>
    符号 ";" 被替换为 "end-of-file" 后继续。  ORA-06550: 第 5 行, 第 3 列: 
    PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
     ;
       <an identifier> <a double-quoted delimited-identifier>
    符号 ";" 被替换为 "end-of-file" 后继续。
      

  5.   

    SQL错误[6550][65000]: ORA-06550: ]PLS-00103:出现符号 "end-of-file"在需要下列之一时<an identifier> <a double-quoted delimited-identifier>
    符号 ";" 被替换为 "end-of-file" 后继续。  ORA-06550: 第 5 行, 第 3 列: 
    PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
     ;
       <an identifier> <a double-quoted delimited-identifier>
    符号 ";" 被替换为 "end-of-file" 后继续。
      

  6.   


    #2的是好的呀。DECLARE
      v                    VARCHAR2(20);
      BEGIN EXECUTE         IMMEDIATE 'select 12 from dual' INTO v;
      dbms_output.put_line(v);
    END;
      

  7.   

    declare
    v  varchar2(20);
    begin
    execute immediate 'select 15 from dual' into v;
    dbms_output.put_line(v);
    end;语句经过测试是没问题的!