SQL> create or replace procedure pvdysql(avsql in varchar2) 2 as 3 type t_cur is ref cursor; 4 v_cur t_cur; 5 lv date; 6 begin 7 open v_cur for avsql; 8 loop 9 fetch v_cur into lv; 10 exit when v_cur%notfound; 11 dbms_output.put_line('lv : ' || lv); 12 end loop; 13 end; 14 /过程已创建。SQL> set serveroutput on SQL> exec pvdysql('select sysdate from dual'); lv : 11-1月 -04PL/SQL 过程已成功完成。
我研究了一下午,还没有研究个所以然了:)
各位可否给个例子引导以下,不胜感谢!
2 as
3 type t_cur is ref cursor;
4 v_cur t_cur;
5 lv date;
6 begin
7 open v_cur for avsql;
8 loop
9 fetch v_cur into lv;
10 exit when v_cur%notfound;
11 dbms_output.put_line('lv : ' || lv);
12 end loop;
13 end;
14 /过程已创建。SQL> set serveroutput on
SQL> exec pvdysql('select sysdate from dual');
lv : 11-1月 -04PL/SQL 过程已成功完成。
楼上的大虾,我已经参透你的程序了
在oracle中我怎么才能获得一条sql有多少列呢,是什么函数。
实在不好意思,我对pl/sql了解甚少,而公司非让我做一个这样的存储过程。郁闷呀!我都研究了一天了,哎还是觉得没有什么好办法。
SELECT count(*)
FROM col
WHERE TNAME = '表名';
……
execute immediate 'drop table table_name';
execute immediate 'create table table_name as '||avsql;
--这样动态生成的表table_name存储的就是avsql选择到的数据集
……