我有一个脚本,我只需将其粘贴到POSTGRES 9.1中的SQL查询窗口并运行。
例如 - 开始脚本 - 第1部分
DO
$$
BEGIN
CREATE SEQUENCE base_listing_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
ALTER TABLE base_listing_id_seq
OWNER TO postgres;
EXCEPTION
WHEN duplicate_table THEN RAISE NOTICE 'sequence base_listing_id_seq already exists';
END
$$ LANGUAGE plpgsql;
-- Part 2
CREATE TABLE IF NOT EXISTS aes_fba_details
(
id serial NOT NULL,
product_id integer NOT NULL,
shippingprice numeric DEFAULT 0,
fbadatetime date NOT NULL,
currency text,
CONSTRAINT aes_fba_details_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE aes_fba_details
OWNER TO postgres;
-- End Scripts
我想要做的是根据从表中读入的值(如果你喜欢的版本字符串)运行第1部分或第2部分。
例如
myVariable = SELECT version-string FROM versionTable;
...
DO PART 1
...
If myVariable > 1 then
...
DO PART 2
...
End if
这甚至可能吗?如果我把术语搞混了,我会提前道歉。
答案 0 :(得分:1)
这是可能的,但您需要在使用DO
条件的大IF
块中执行所有DDL,以决定要做什么。
您不能在纯SQL中使用变量或IF
语句,只能在PL / PgSQL中使用。