--create表语句
declare
v_cur number;
v_sql varchar2(200);
begin
v_cur:=dbms_sql.open_cursor;
for i in 1..31 loop
v_sql:='create table myWoss_detail_'||i||
--拨号上网账号
'(AAA_login_name varchar2(15),'||
--NAS为上网用户动态分配的ip地址
'login_ip varchar2(32),'||
--拨号用户上线时间
'login_date date,'||
--拨号用户下线时间
'logout_date date,'||
--登录的NAS服务器ip地址
'NAS_ip varchar2(32),'||
--拨号用户上网时长
'time_deration number(10))';
dbms_sql.parse(v_cur,v_sql,dbms_sql.native);
end loop;
dbms_sql.close_cursor(v_cur);
end;
/我的问题是:问什么要打开游标,又关闭游标,这里和游标有什么关系吗,不要游标会怎样?

解决方案 »

  1.   

    我对此也很有兴趣。。我更改了下,不用游标也可的 
    declare
    v_cur number;
    v_sql varchar2(200);
    begin
    --v_cur:=dbms_sql.open_cursor;
    for i in 34..39 loop
    v_sql:='create table myWoss_detail_'||i||
    --拨号上网账号
    '(AAA_login_name varchar2(15),'|| 
    --NAS为上网用户动态分配的ip地址
    'login_ip varchar2(32),'||
    --拨号用户上线时间
    'login_date date,'||
    --拨号用户下线时间
    'logout_date date,'||
    --登录的NAS服务器ip地址
    'NAS_ip varchar2(32),'||
    --拨号用户上网时长
    'time_deration number(10))';execute immediate v_sql;
    --dbms_sql.parse(v_cur,v_sql,dbms_sql.native);
    end loop;
    ---dbms_sql.close_cursor(v_cur);
    end;

    用游标的原因请参考http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx
      

  2.   

    dbms_sql这个包我没用过,不过,2楼的动态执行Sql语句那种方法,我使用过,是在pl/sql编程指南上学到的,
      

  3.   

    自己操纵游标的话,必须有close。不然回头你的session里得cursor超出参数限制就不能再打开cursor了