Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle游标动态切换表_Sql_Oracle_Cursor - Fatal编程技术网

Sql Oracle游标动态切换表

Sql Oracle游标动态切换表,sql,oracle,cursor,Sql,Oracle,Cursor,大家好,我想问一下,有没有办法在oracle游标中动态切换表 cursor c_testing IS SELECT a,b,c FROM test_table TYPE tbl_testing IS TABLE OF c_testing%ROWTYPE INDEX BY PLS_INTEGER; rec_testing tbl_testing; 目前,c_测试只是从test_表中进行选择,但我希望能够根据传入的参数切换到test_表或test_表。executeimmediate似乎不适

大家好,我想问一下,有没有办法在oracle游标中动态切换表

cursor c_testing IS  SELECT a,b,c FROM test_table 

TYPE tbl_testing IS TABLE OF c_testing%ROWTYPE INDEX BY PLS_INTEGER;
rec_testing tbl_testing;
目前,c_测试只是从test_表中进行选择,但我希望能够根据传入的参数切换到test_表或test_表。executeimmediate似乎不适用于游标,我想:(

Refcursor

SQL> create or replace function f_test (par_id in number)
  2    return sys_refcursor
  3  is
  4    cur_r sys_refcursor;
  5  begin
  6    if par_id = 1 then
  7       open cur_r for select empno, ename, job, sal from emp;
  8    elsif par_id = 2 then
  9       open cur_r for select dname, loc from dept;
 10    end if;
 11
 12    return cur_r;
 13  end;
 14  /

Function created.

SQL> select f_test(1) from dual;

F_TEST(1)
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

     EMPNO ENAME      JOB              SAL
---------- ---------- --------- ----------
      7839 KING       PRESIDENT       5000
      7698 BLAKE      MANAGER         2850
      7782 CLARK      MANAGER         2450
      7566 JONES      MANAGER         2975
      7788 SCOTT      ANALYST         3000
      7902 FORD       ANALYST         3000
      7369 SMITH      CLERK            800
      7499 ALLEN      SALESMAN        1600
      7521 WARD       SALESMAN        1250
      7654 MARTIN     SALESMAN        1250
      7844 TURNER     SALESMAN        1500
      7876 ADAMS      CLERK           1100
      7900 JAMES      CLERK            950
      7934 MILLER     CLERK           1300

14 rows selected.


SQL> select f_test(2) from dual;

F_TEST(2)
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

DNAME          LOC
-------------- -------------
ACCOUNTING     NEW YORK
RESEARCH       DALLAS
SALES          CHICAGO
OPERATIONS     BOSTON


SQL>

两个表
test\u table\u dly
test\u table\u mly
是否分别有a、b、c列?