首先v_col不是表中的一列,而是你自定义的变量,其次缺少where条件,这样会导致全部替换的。
解决方案 »
- 有五十万行的txt文本,一行当作一个值,怎么导入后台数据库的一张表
- 触发器问题,求解
- 请教大家一个关于丢失更新的问题。
- 200MB的数据入blob多长时间是正常的?
- 这个GROUP BY语句该怎么写?
- 急问!!!!!!来者有分!!!!
- 高手请进:一条SQL命令!
- 为什么这个程序块会出错:关于游标的。
- Oracal客户端与服务器端如何建立连接?需要什么映射吗?
- 怪问题ORA-00937: not a single-group group function
- SQL STATEMENT QUESTION!!! the question solved then destribute score immediate!!賬
- 问几个基础问题。100分,只想知道准确答案。
我现在就是想对表的每一列都进行处理。我想问这样的语句为什么会编译不了,thx!
http://community.csdn.net/Expert/topic/2896/2896736.xml?temp=.4902155
create or replace function test return varchar2 as
v_cursor number;
v_string varchar2(200);
v_row number;
begin
v_cursor:=dbms_sql.open_cursor;
v_string:='update table a set a.字段=''OK'' where ...' ;
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
v_row:=dbms_sql.execute(v_cursor);
dbms_sql.close_cursor(v_cursor);
return ('成功执行'||v_row||'行!');
exception
when others then
dbms_sql.close_cursor(v_cursor);
return ('执行失败!'||sqlcode||sqlerrm);
raise;
end;
v_col varchar2(128);
v_str varchar2(200);
cursor c_col is select column_name from all_tab_columns where table_name=v_tablename;
begin
open c_col;
loop
fetch c_col into v_col;
v_str:='update' ||v_tablename|| 'set' ||v_col|| '=replace('||v_col||','*','')';
dbms_output.put_line(v_str);
execute immediate v_str;
exit when c_col%notfound;
end loop;
commit;
close c_col;
end;改成这样还不行
编译无错误,运行出现错误
SQL> exec SP_replace('TEST');begin SP_replace('TEST'); end;ORA-06502: PL/SQL: 数字或值错误 : 字符到数值的转换错误
ORA-06512: 在"SCOTT.SP_REPLACE", line 9
ORA-06512: 在line 1
v_col 不是列,怎么能执行