在函数里面能不能实现查询?就是能不能在函数里写select语句查询,而不是select into 的赋值语句?我想写个函数,设置一个入口参数,然后用这个参数查好几个表里面的数据,能实现么?怎么实现?帮写个框架

解决方案 »

  1.   

    create or replace procedure test (
      id_ in varchar2,)
    is
    begin
      select × from table where id=id_;
      ......
    end test;
    不知道这样的可行不?
      

  2.   

    CREATE OR REPLACE FUNCTION TEST(tablename IN VARCHAR2)
    RETURN BOOLEAN
    IS
      stmt_sql                   VARCHAR2(1024) DEFAULT NULL; 
      type cursor_type           IS REF CURSOR; 
      cur                        cursor_type; 
      v_name                     VARCHAR2(20);
    BEGIN
      stmt_sql := ' SELECT ENAME ';
      stmt_sql := stmt_sql || ' FROM '||tablename||' ';
      
      OPEN cur FOR stmt_sql;
      LOOP 
        FETCH cur
        INTO  v_name;
        dbms_output.put_line(v_name);
        EXIT WHEN cur%NOTFOUND;
      END LOOP;
      CLOSE cur;
      RETURN TRUE;
    END TEST;
    在scott模式下,当tablename输入emp的时候,结果为:
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    MILLER