declare
sText VARCHAR2(3000);
sTable varchar2(30);
begin
sTable := '&Tablename';
select get_sql_insert(sTable) INTO sText from dual;
DBMS_OUTPUT.put_line(sText);
DBMS_OUTPUT.put_line('');
DBMS_OUTPUT.put_line('');
select get_sql_Update(sTable) INTO sText from dual;
DBMS_OUTPUT.put_line(sText);
DBMS_OUTPUT.put_line('');
DBMS_OUTPUT.put_line('');
select get_sql_select(sTable) INTO sText from dual;
DBMS_OUTPUT.put_line(sText);
end;
/
CREATE OR REPLACE FUNCTION GET_SQL_INSERT(STABLENAME IN VARCHAR2) RETURN VARCHAR2 IS
/*
-- 用途 : 获取表全部字段的插入(INSERT)语句
*/
RESULT VARCHAR2(3000);
I INTEGER;
BEGIN
I:= 0;
RESULT := 'INSERT INTO '|| UPPER(STABLENAME) ||'(' ;
FOR CUR IN (SELECT COLUMN_NAME FROM USER_TAB_COLS WHERE UPPER(TABLE_NAME) = UPPER(STABLENAME) ORDER BY COLUMN_ID ) LOOP
IF I = 0 THEN
RESULT := RESULT || CUR.C