日和見軽太郎商会のブログ -6ページ目

日和見軽太郎商会のブログ

今日はヒマだし天気もイイし、クルマでもちょすとしますか!

テキトウにストアドプロシジャを作成

CREATE OR REPLACE PROCEDURE public.pr_mst_item_select_00(
    IN p_sub_fr numeric,
    IN p_sub_to numeric,
    IN p_item_fr numeric,
    IN p_item_to numeric,
    INOUT p_num numeric[],
    INOUT p_msg text[],
    INOUT p_result numeric,
    INOUT p_cur refcursor)
LANGUAGE 'plpgsql'
AS $BODY$
declare
    sub_fr    numeric    :=    p_sub_fr;
    sub_to    numeric    :=    p_sub_to;
    item_fr    numeric    :=    p_item_fr;
    item_to    numeric    :=    p_item_to;

begin
    p_result    :=    99;

    if    sub_fr    =    0    then
        sub_fr    :=    0;
    end    if;
    
    if    sub_to    =    0    then
        sub_to    :=    9999;
    end    if;
    
    if    item_fr    =    0    then
        item_fr    :=    0;
    end    if;
    
    if    item_to    =    0    then
        item_to    :=    9999999999999;
    end    if;
    
    open    p_cur    for
            select    m0.*
                ,    m1.name    as    subname
                    from    (
                        select    *
                                from    mst_item
                                where    sub        >=    sub_fr
                                    and    sub        <=    sub_to
                                    and    item    >=    item_fr
                                    and    item    <=    item_to
                        )    m0

                    inner    join    (
                        select    *
                                from    mst_subject
                                where    sub        >=    sub_fr
                                    and    sub        <=    sub_to
                        )    m1
                        on    m0.sub    =    m1.sub

                    order    by    m1.turn,    m0.sub,    m0.item
        ;

    p_num    :=    array[5,4,3,2,1,0,-1,-2,-3,-4,-5];
    p_msg    :=    array['AAAAA','BBBBB','CCCCC',to_char(now(),'YYYYMMDDHH24MISSMS')];
    p_result    :=    0;

end;
$BODY$;
ALTER PROCEDURE public.pr_mst_item_select_00(numeric, numeric, numeric, numeric, numeric[], text[], numeric, refcursor)
    OWNER TO postgres;
 

 

お約束の「psycopg2」をインストール

# dnf install -y python-psycopg2

 

普通にDB接続

con = psycopg2.connect(host = SV名, port = 5432, database = DB名, user = UID, password = P/W)


トランザクション開始
メソッドは何もない様子(何だか違和感あり)

トランザクションコミット
con.commit()

トランザクションロールバック
con.rollback()


DB切断
con.close()
 

テキトウにデータベースを作成

CREATE DATABASE teki
    WITH
    OWNER = "user"
    ENCODING = 'UTF8'
    LC_COLLATE = 'ja_JP.UTF-8'
    LC_CTYPE = 'ja_JP.UTF-8'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1
    IS_TEMPLATE = False;

 

テキトウにテーブルも作成

CREATE TABLE IF NOT EXISTS public.mst_subject
(
    sub numeric(4,0) NOT NULL,
    name character varying(1000) COLLATE pg_catalog."default",
    ins_user character varying(200) COLLATE pg_catalog."default" NOT NULL DEFAULT 'Kieth'::character varying,
    ins_term character varying(200) COLLATE pg_catalog."default" NOT NULL DEFAULT 'Moon'::character varying,
    ins_ymd numeric(8,0) DEFAULT to_number(to_char(now(), 'YYYYMMDD'::text), 'FM09999999MI'::text),
    ins_hms numeric(9,0) DEFAULT to_number(to_char(now(), 'HH24MISSMS'::text), 'FM099999999MI'::text),
    upd_user character varying(200) COLLATE pg_catalog."default",
    upd_term character varying(200) COLLATE pg_catalog."default",
    upd_ymd numeric(8,0) DEFAULT 0,
    upd_hms numeric(9,0) DEFAULT 0,
    CONSTRAINT mst_subject_pk PRIMARY KEY (sub)
)

TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.mst_subject    OWNER to postgres;
COMMENT ON TABLE public.mst_subject    IS '分類マスタ';
COMMENT ON COLUMN public.mst_subject.sub    IS '分類コード';
COMMENT ON COLUMN public.mst_subject.name    IS '分類名称';
COMMENT ON COLUMN public.mst_subject.ins_user    IS '作成ユーザー名';
COMMENT ON COLUMN public.mst_subject.ins_term    IS '作成コンピュータ名';
COMMENT ON COLUMN public.mst_subject.ins_ymd    IS '作成日';
COMMENT ON COLUMN public.mst_subject.ins_hms    IS '作成時刻';
COMMENT ON COLUMN public.mst_subject.upd_user    IS '更新ユーザー名';
COMMENT ON COLUMN public.mst_subject.upd_term    IS '更新コンピュータ名';
COMMENT ON COLUMN public.mst_subject.upd_ymd    IS '更新日';
COMMENT ON COLUMN public.mst_subject.upd_hms    IS '更新時刻';

 

もう1個テキトウにテーブルを作成

CREATE TABLE IF NOT EXISTS public.mst_item
(
    item numeric(20,0) NOT NULL,
    sub numeric(4,0) NOT NULL,
    name character varying(1000) COLLATE pg_catalog."default" NOT NULL,
    kana character varying(1000) COLLATE pg_catalog."default" NOT NULL,
    purchase_price numeric(14,3) NOT NULL DEFAULT 0,
    sales_price numeric(14,3) NOT NULL DEFAULT 0,
    ins_user character varying(200) COLLATE pg_catalog."default" NOT NULL,
    ins_term character varying(200) COLLATE pg_catalog."default" NOT NULL,
    ins_ymd numeric(8,0) DEFAULT to_number(to_char(now(), 'YYYYMMDD'::text), 'FM09999999MI'::text),
    ins_hms numeric(9,0) DEFAULT to_number(to_char(now(), 'HH24MISSMS'::text), 'FM099999999MI'::text),
    upd_user character varying(200) COLLATE pg_catalog."default",
    upd_term character varying(200) COLLATE pg_catalog."default",
    upd_ymd numeric(8,0) DEFAULT 0,
    upd_hms numeric(9,0) DEFAULT 0,
    supplier numeric(8,0) DEFAULT 999,
    CONSTRAINT mst_item_pk PRIMARY KEY (item)
)

TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.mst_item    OWNER to postgres;
COMMENT ON TABLE public.mst_item    IS '商品マスタ';
COMMENT ON COLUMN public.mst_item.item    IS '商品コード';
COMMENT ON COLUMN public.mst_item.sub    IS '分類コード';
COMMENT ON COLUMN public.mst_item.name    IS '名称';
COMMENT ON COLUMN public.mst_item.kana    IS 'カナ名称';
COMMENT ON COLUMN public.mst_item.purchase_price    IS '購入単価';
COMMENT ON COLUMN public.mst_item.sales_price    IS '売単価';
COMMENT ON COLUMN public.mst_item.ins_user    IS '作成ユーザー名';
COMMENT ON COLUMN public.mst_item.ins_term    IS '作成コンピュータ名';
COMMENT ON COLUMN public.mst_item.ins_ymd    IS '作成日';
COMMENT ON COLUMN public.mst_item.ins_hms    IS '作成時刻';
COMMENT ON COLUMN public.mst_item.upd_user    IS '更新ユーザー名';
COMMENT ON COLUMN public.mst_item.upd_term    IS '更新コンピュータ名';
COMMENT ON COLUMN public.mst_item.upd_ymd    IS '更新日';
COMMENT ON COLUMN public.mst_item.upd_hms    IS '更新時刻';