3

SQL の経験は豊富ですが、Oracle PL/SQL は初めてです。現在、いくつかの T-SQL ステートメントを PL/SQL に変換しようとしています。次のコードを実行しようとしていますが、いくつかのエラーが発生します。

テーブルがまだ存在しない場合、エラーは次のとおりです。テーブルまたはビューは存在しません。しかし、2 番目の select ステートメントなしでクエリを実行すると、テーブルが作成されます。テーブルが存在するので、もう一度実行しようとしましたが、次のエラーが発生しています。

この SELECT ステートメントには INTO 句が必要です。

私が使用しているコード:

DECLARE
  cnt NUMBER;
  stmt VARCHAR2(1000) := 'CREATE TABLE LAST_LOG_ARCHIVE (LAST_LOG_ARCHIVE TIMESTAMP NULL)';
BEGIN
    SELECT COUNT(*) INTO cnt FROM all_tables WHERE table_name = 'LAST_LOG_ARCHIVE';

    IF (cnt = 0) THEN
        EXECUTE IMMEDIATE stmt;
    END IF;

    SELECT COALESCE((
      SELECT LAST_LOG_ARCHIVE FROM LAST_LOG_ARCHIVE WHERE ROWNUM = 1
      ), TO_TIMESTAMP('2015-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) AS LAST_LOG_ARCHIVE FROM dual;
END;

どうすれば解決できますか...

4

3 に答える 3