Category: oracle

oracle schemaを削除するクエリ

By admin | 2009年3月3日

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SET serveroutput ON
declare
ob varchar2(4000);
    CURSOR cur IS
        SELECT object_type,object_name FROM user_objects ORDER BY object_type,object_name;
begin
    FOR vRec IN cur LOOP
        begin
            ob := 'DROP ' || vRec.object_type || ' ' || vRec.object_name;
            DBMS_OUTPUT.PUT_LINE(ob);
            execute immediate ob;
        exception
            when others then
                DBMS_OUTPUT.PUT_LINE('No:' || SQLERRM);
                DBMS_OUTPUT.PUT_LINE('Object:' || vRec.object_name);
        end;
    END LOOP;
end;

おまけ

mysql でいう limit みたいなこと。
rownum でしないといけない。相当めんどい。

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    *
FROM
    (
        --実際に取得したいクエリー
        SELECT
            hoge,
            rownum rn
        FROM
            fuga
    )
WHERE
    1 <= rn AND rn <= 10

さらにさらに
order by した上位10件とかだとこうなる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    *
FROM
    (
        SELECT
            *,
            rownum rn
        FROM
            (
                --実際に取得したいクエリー
            SELECT
                hoge
            FROM
                fuga
            ORDER BY
                foo
            )
    )
WHERE
    1 <= rn AND rn <= 10

めんどくさすぎる。。。。
というのをただ伝えたかっただけwww

WordPress Themes