dav*_*lab 4 string oracle varchar plsql trim
在Oracle 10g中,有没有办法在PL/SQL中执行以下操作?
for each table in database
for each row in table
for each column in row
if column is of type 'varchar2'
column = trim(column)
Run Code Online (Sandbox Code Playgroud)
谢谢!
当然,进行大规模动态更新可能会带来危险和耗时.但是这里是你如何生成你想要的命令.这是针对单个模式的,只是构建命令并输出它们.您可以将它们复制到脚本中并在运行之前查看它们.或者,您可以更改dbms_output.put_line( ... )
为EXECUTE IMMEDIATE ...
让此脚本在生成时执行所有语句.
SET SERVEROUTPUT ON
BEGIN
FOR c IN
(SELECT t.table_name, c.column_name
FROM user_tables t, user_tab_columns c
WHERE c.table_name = t.table_name
AND data_type='VARCHAR2')
LOOP
dbms_output.put_line(
'UPDATE '||c.table_name||
' SET '||c.column_name||' = TRIM('||c.column_name||') WHERE '||
c.column_name||' <> TRIM('||c.column_name||') OR ('||
c.column_name||' IS NOT NULL AND TRIM('||c.column_name||') IS NULL)'
);
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13776 次 |
最近记录: |