質問: バッチファイルを作成し、そこから SQLを記載したファイルをキックさせて実行させようと思っています。 Oracleなど触ったこともなくよく分からないのですが、 SQLで条件分岐をする際にはどういった書き方をすればいいのでしょうか? Oracleでオンラインバックアップを行おうと思っているのですが、実際に ``` Select Log_mode from v$Database ; ``` で、実行したものが `ARCHIVELOG` でない場合 ``` Alter DATABASE Archivelog ; ``` を、実行みたいなこと。 できるでしょうか。 分かる方よろしくお願い致します。
回答: やり方はいくつかあると思いますが、PL/SQLを使うのであればこんな感じでしょうか? ``` DECLARE vLogMode VARCHAR2(12); BEGIN SELECT LOG_MODE INTO vLogMode FROM V$DATABASE; IF (TRIM(vLogMode) = 'ARCHIVELOG') THEN DBMS_OUTPUT.PUT_LINE('ログモードはARCHIVELOGモードです。'); ELSE -- 他の処理 END IF; END; / ``` 但し、DDLコマンド(CREATE、DROP、TRUNCATE、ALTERなど)を使うのであれば、動的SQLでしか実行できません。その場合「EXECUTE IMMEDIATE」を使います。 動的SQLのコーディング