declare
v_sql varchar2(200);
begin
v_sql:=select'alter user '||userid||' identified by '||userid||';' from table;
execute immediate v_sql;
end:
/
v_sql varchar2(200);
begin
v_sql:=select'alter user '||userid||' identified by '||userid||';' from table;
execute immediate v_sql;
end:
/
v_sql varchar2(200);
begin
v_sql:='select''alter user ''||userid||'' identified by ''||userid||'';'' from table';
execute immediate v_sql;
end:
v_sql 整个都是字符串,select、以及后面的关键字语句 都放到引号里面去!
我觉得你的SQL没错,但是生成这个动态SQL时从表里返回了多条结果,所以执行时报错。
v_sql varchar2(200);
begin v_sql:= ' select ''alter user '''||userid||''' identified by '''||userid||''' from as_company';
execute immediate v_sql;
end;试试
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: