الهام جان نثار
دوشنبه 16 فروردین 1389, 15:59 عصر
سلام
من میخوام با یه برنامه کل دیتای Database رو Update کنم ، به این ترتیب که در تمام Tableها اگر دیتایی از نوع String باشد را مطابق Function ذیل تغییر دهد.
مشکل اینجاست که وقتی آنرا روی دیتای تستی امتحان میکنم به درستی کار میکند ولی با دیتای واقعی خطای ORA-00971 میدهد ولی ساختار و Syntax مربوط به SET صحیح است...!!!!
CREATE OR REPLACE
FUNCTION AllTrimReplace (NAMES IN VARCHAR2) RETURN VARCHAR2
is
STR VARCHAR2(1000);
begin
STR := TRIM(NAMES);
STR := REPLACE(STR, chr(55690) , chr(56204));
STR := REPLACE(STR, chr(55977) , chr(55683));
RETURN STR;
END AllTrimReplace;
CREATE OR REPLACE Procedure elhamProc
IS
column_name varchar2(100);
table_name varchar2(100);
cursor elhamcursor is
select c.column_name, c.table_name from user_tab_columns c inner join user_tables t on c.table_name = t.table_name
where data_type='NVARCHAR2' or data_type='VARCHAR2';
BEGIN
open elhamcursor;
loop
fetch elhamcursor into column_name, table_name;
exit when elhamcursor%NOTFOUND;
execute immediate 'update ' || table_name || ' set ' || column_name || ' = AllTrimReplace(' || column_name || ')';
end loop;
close elhamcursor;
END;
من میخوام با یه برنامه کل دیتای Database رو Update کنم ، به این ترتیب که در تمام Tableها اگر دیتایی از نوع String باشد را مطابق Function ذیل تغییر دهد.
مشکل اینجاست که وقتی آنرا روی دیتای تستی امتحان میکنم به درستی کار میکند ولی با دیتای واقعی خطای ORA-00971 میدهد ولی ساختار و Syntax مربوط به SET صحیح است...!!!!
CREATE OR REPLACE
FUNCTION AllTrimReplace (NAMES IN VARCHAR2) RETURN VARCHAR2
is
STR VARCHAR2(1000);
begin
STR := TRIM(NAMES);
STR := REPLACE(STR, chr(55690) , chr(56204));
STR := REPLACE(STR, chr(55977) , chr(55683));
RETURN STR;
END AllTrimReplace;
CREATE OR REPLACE Procedure elhamProc
IS
column_name varchar2(100);
table_name varchar2(100);
cursor elhamcursor is
select c.column_name, c.table_name from user_tab_columns c inner join user_tables t on c.table_name = t.table_name
where data_type='NVARCHAR2' or data_type='VARCHAR2';
BEGIN
open elhamcursor;
loop
fetch elhamcursor into column_name, table_name;
exit when elhamcursor%NOTFOUND;
execute immediate 'update ' || table_name || ' set ' || column_name || ' = AllTrimReplace(' || column_name || ')';
end loop;
close elhamcursor;
END;