declare 
  v_sql varchar2(200);
begin
  v_sql:=select'alter user '||userid||' identified by '||userid||';' from table;
  execute immediate v_sql;
end:
/

解决方案 »

  1.   

    declare  
      v_sql varchar2(200);
    begin
      v_sql:='select''alter user ''||userid||'' identified by ''||userid||'';'' from table';
      execute immediate v_sql;
    end:
      

  2.   

    execute immediate  后面整个 是字符串sql.
    v_sql  整个都是字符串,select、以及后面的关键字语句 都放到引号里面去!
      

  3.   

    你应该把错误信息发出来啊。 
    我觉得你的SQL没错,但是生成这个动态SQL时从表里返回了多条结果,所以执行时报错。
      

  4.   

    declare  
      v_sql varchar2(200);
    begin  v_sql:= ' select ''alter user '''||userid||''' identified by '''||userid||''' from as_company';
      execute immediate v_sql;
    end;试试
      

  5.   

    上面都是什么乱七八糟的,连题都看不明白,他是要把查询出来的语句都执行一遍。
    declare 
      v_sql varchar2(200);
    begin
      for c in (select 'alter user '||userid||' identified by "'||userid||'"' str from table) loop
        v_sql:= c.str;
        execute immediate v_sql;
      end loop;
    end: