代码如下:
declare
v_name varchar2(10):='zzs';
v_sql  varchar2(500);
v_s varchar(20);
cursor c(v_name varchar2)
is
select v_name from table;
begin
open c;
loop
if c%found then
fetch v_name into v_s;
v_sql ='insert into table2 values('||v_name||')';
DBMS_output.put_line('v_sql='||v_sql);
else
exit
end if;
end loop;
end;得到的值为zzs,请问如何才能得到zzs对应字段的值呢,实际上表中的zzs为
zzs
124

解决方案 »

  1.   

    try
    declare
    v_name varchar2(10):='zzs';
    v_sql  varchar2(500);
    v_s varchar(20);
    cursor c(v_name varchar2)
    is
    select v_name from table;
    begin
    open c;
    loop
    if c%found then
    fetch c into v_s;
    v_sql ='insert into table2 values('''||v_s||''')';
    DBMS_output.put_line('v_sql='||v_s);
    else
    exit
    end if;
    end loop;
    end;
      

  2.   

    给你例子:SQL> declare
      2    v_name varchar2(10) := 'ename';
      3    v_sql  varchar2(500);
      4    v_s    varchar(20);
      5    c      sys_refcursor;
      6  begin
      7    open c for 'select ' || v_name || ' from emp';
      8    loop
      9      fetch c
     10        into v_s;
     11      exit when c%notfound;
     12      v_sql := 'insert into emp2 values(''' || v_s || ''')';
     13      DBMS_output.put_line('v_sql=' || v_sql);
     14    end loop;
     15  end;
     16  /
     
    v_sql=insert into emp2 values('SMITH')
    v_sql=insert into emp2 values('ALLEN')
    v_sql=insert into emp2 values('WARD')
    v_sql=insert into emp2 values('JONES')
    v_sql=insert into emp2 values('MARTIN')
    v_sql=insert into emp2 values('BLAKE')
    v_sql=insert into emp2 values('CLARK')
    v_sql=insert into emp2 values('SCOTT')
    v_sql=insert into emp2 values('KING')
    v_sql=insert into emp2 values('TURNER')
    v_sql=insert into emp2 values('ADAMS')
    v_sql=insert into emp2 values('JAMES')
    v_sql=insert into emp2 values('FORD')
    v_sql=insert into emp2 values('MILLER')
     
    PL/SQL procedure successfully completed
      

  3.   

    换个简单的问法:
    declare
    v_name varchar2(10):='zzs';
    cursor c(v_name varchar2)--这里的v_name 如何作为字段进行使用呢
    is
    select v_name from table;