sql >> データベース >  >> RDS >> PostgreSQL

未終了のドル相場

    一部のプラットフォームはドル見積もりをサポートしていません。特定の例では、最後のENDの後にセミコロンを付ける必要があります 。 DECLAREを追加する必要がある場合があります ステートメントも。

    DO
    $$
    DECLARE
    BEGIN
        IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'categories')) 
        THEN
            CREATE TABLE IF NOT EXISTS categories
            (
              id   SERIAL NOT NULL,
              name character varying(40),
              CONSTRAINT categories_pkey PRIMARY KEY (id)
            );
    
            INSERT INTO categories (name) VALUES ('Games');
            INSERT INTO categories (name) VALUES ('Multimedia');
            INSERT INTO categories (name) VALUES ('Productivity');
            INSERT INTO categories (name) VALUES ('Tools');
            INSERT INTO categories (name) VALUES ('Health');
            INSERT INTO categories (name) VALUES ('Lifestyle');
            INSERT INTO categories (name) VALUES ('Other');
        END IF;
    END;
    $$  LANGUAGE PLPGSQL;
    

    ドルの見積もりを認識しないプラットフォームの場合は、'を使用できます。 代わりは。 'をエスケープする必要があります ただし、無名関数の本体にあります。

    そのように:

    DO
    '
    DECLARE
    BEGIN
        IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''categories'')) 
        THEN
            CREATE TABLE IF NOT EXISTS categories
            (
              id   SERIAL NOT NULL,
              name character varying(40),
              CONSTRAINT categories_pkey PRIMARY KEY (id)
            );
    
            INSERT INTO categories (name) VALUES (''Games'');
            INSERT INTO categories (name) VALUES (''Multimedia'');
            INSERT INTO categories (name) VALUES (''Productivity'');
            INSERT INTO categories (name) VALUES (''Tools'');
            INSERT INTO categories (name) VALUES (''Health'');
            INSERT INTO categories (name) VALUES (''Lifestyle'');
            INSERT INTO categories (name) VALUES (''Other'');
        END IF;
    END;
    '  LANGUAGE PLPGSQL;
    

    DBFiddle 実用的な例を表示します。



    1. あまりにも多くの結果を返すマルチテーブルMySQLクエリ

    2. MySQL INSERT else(存在する場合)UPDATE

    3. Android接続エラーjava.lang.UnsupportedOperationException

    4. プリペアドステートメントの内容を表示するにはどうすればよいですか?