ORACLE 表去掉空格的函數

來源:互聯網
上載者:User

CREATE OR REPLACE PROCEDURE ZZSJ.TRIM_TABLE(V_TABLE_NAME IN VARCHAR2) IS
BEGIN
  DECLARE
    OUT_STRING VARCHAR2(9999);
  BEGIN
    IF V_TABLE_NAME IS NOT NULL THEN
      BEGIN
        --CREATE TABLE
        SELECT SQL_CREATE
          INTO OUT_STRING
          FROM V_TRIM_SYBASE
         WHERE TABLE_NAME = UPPER(V_TABLE_NAME)
           AND ROWNUM = 1;
        EXECUTE IMMEDIATE 'CREATE TABLE ' || OUT_STRING ||'';
        -- DROP TABLE
        SELECT SQL_DROP
          INTO OUT_STRING
          FROM V_TRIM_SYBASE
         WHERE TABLE_NAME = UPPER(V_TABLE_NAME)
           AND ROWNUM = 1;
        EXECUTE IMMEDIATE 'DROP TABLE ' || OUT_STRING ||'';
        -- RENAME
        SELECT SQL_RENAME
          INTO OUT_STRING
          FROM V_TRIM_SYBASE
         WHERE TABLE_NAME = UPPER(V_TABLE_NAME)||'_TEMP'
           AND ROWNUM = 1;
        EXECUTE IMMEDIATE 'RENAME ' || OUT_STRING ||'';
      END;
    END IF;
    IF V_TABLE_NAME IS NULL THEN
      FOR CUR_TABLE IN (SELECT TABLE_NAME FROM V_TRIM_SYBASE) LOOP
        BEGIN
          --CREATE TABLE
          SELECT SQL_CREATE
            INTO OUT_STRING
            FROM V_TRIM_SYBASE
           WHERE TABLE_NAME = UPPER(CUR_TABLE.TABLE_NAME)
             AND ROWNUM = 1;
          EXECUTE IMMEDIATE 'CREATE TABLE ' || OUT_STRING ||'';
          --DROP TABLE
          SELECT SQL_DROP
            INTO OUT_STRING
            FROM V_TRIM_SYBASE
           WHERE TABLE_NAME = UPPER(CUR_TABLE.TABLE_NAME)
             AND ROWNUM = 1;
          EXECUTE IMMEDIATE 'DROP TABLE ' || OUT_STRING ||'';
          --RENAME
          SELECT SQL_RENAME
            INTO OUT_STRING
            FROM V_TRIM_SYBASE
           WHERE TABLE_NAME = UPPER(CUR_TABLE.TABLE_NAME)||'_TEMP'
             AND ROWNUM = 1;
          EXECUTE IMMEDIATE 'RENAME ' || OUT_STRING ||'';
        END;
      END LOOP;
    END IF;
  END;
END TRIM_TABLE;

===============================================
 CREATE OR REPLACE VIEW ZZSJ.V_TRIM_SYBASE AS
SELECT TABLE_NAME, owner||'.'||TABLE_NAME ||'_TEMP  AS SELECT '||fun_get_columns(upper('zzsj'),table_name)||' FROM
'||owner||'.'||TABLE_NAME SQL_CREATE,
owner||'.'||TABLE_NAME ||' PURGE' SQL_DROP, TABLE_NAME ||' TO '||substr(TABLE_NAME,1,instr(TABLE_NAME,'_TEMP')-1) SQL_RENAME   FROM all_tables WHERE owner=upper('zzsj')

===================================================

CREATE OR REPLACE FUNCTION FUN_GET_COLUMNS(/*V_OWNER      IN VARCHAR2,*/
                                           V_TABLE_NAME IN VARCHAR2)
  RETURN VARCHAR2 IS
  S_TEMP VARCHAR2(2000);
BEGIN
    S_TEMP := '';
/*  IF UPPER(V_OWNER) = 'HZSJ' THEN*/
    FOR CUR_COLUMN IN (SELECT  COLUMN_NAME
                         FROM All_Tab_Columns
                        WHERE table_name = LOWER(V_TABLE_NAME);
                       ) LOOP
      S_TEMP := S_TEMP || 'trim("' || LOWER(CUR_COLUMN.COLUMN_NAME) ||
                '") ' || CUR_COLUMN.COLUMN_NAME || ',';
    END LOOP;
    RETURN SUBSTR(S_TEMP, 1, LENGTH(S_TEMP) - 1);
  /*
  ELSIF UPPER(V_OWNER) = 'SYBASE OLD' THEN
    FOR CUR_COLUMN IN (SELECT 'trim("' || B."name" || '") ' ||
                              UPPER(B."name") COLUMN_NAME
                         FROM "dbo"."sysobjects"@TG4SYBS A,
                              "dbo"."syscolumns"@TG4SYBS B
                        WHERE A."name" = V_TABLE_NAME
                          AND A."id" = B."id"
                        ORDER BY B."colid") LOOP
      S_TEMP := S_TEMP || CUR_COLUMN.COLUMN_NAME || ',';
    END LOOP;
    RETURN SUBSTR(S_TEMP, 1, LENGTH(S_TEMP) - 1);

  ELSE
    FOR CUR_COLUMN IN (SELECT '"' || COLUMN_NAME || '" ' ||
                              UPPER(COLUMN_NAME) COLUMN_NAME
                         FROM ALL_TAB_COLUMNS
                        WHERE TABLE_NAME = V_TABLE_NAME
                          AND OWNER = V_OWNER
                        ORDER BY COLUMN_ID) LOOP
      S_TEMP := S_TEMP || CUR_COLUMN.COLUMN_NAME || ',';
    END LOOP;
    RETURN SUBSTR(S_TEMP, 1, LENGTH(S_TEMP) - 1);
  END IF;*/
END;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.