2017-09-27 10 views
0

私はPostgreSQL 9.5で動的にクエリを生成したいと思います。PostgreSQL 9.5で動的JSONを生成

これは私のテーブルです:

| id | ObjectType |   content   | 
    -----+-------------+-------------------------------- 
    | 1 |  test | {"test_name": "test object"} | 
    ---------------------------------------------------- 

これは私のクエリの挿入クエリで

DO $$ 
DECLARE name text; 
DECLARE label text; 
BEGIN 

select 'test' into name; 
select 'test object' into label; 
insert into "Constantes" (objecttype,content) values ('test','{"test_name":"test object"}') 

END $$; 

I'lのような、

'test' by the var 'name'を置き換えると 'TEST_NAME' を交換することですname+ '_name

最後に'test object' by the label variableを置き換えます。

私は管理できませんでした、私は+演算子を使用しようとしました||オペレーターは動作しません。

私の目標は、このクエリを異なる値で何度も実行する必要があるため、 '名前'と 'ラベル'変数を変更することだけです。

答えて

1

このブロックを関数内で使用し、値( 'name' - > 'label')を渡すことでその関数を呼び出すことを望みます。そうであれば、番号付きのパラメータを使用できます。公式のpostgresqlのドキュメントをチェックしてください。使用できるいくつかの例があります。https://www.postgresql.org/docs/9.5/static/xfunc-sql.html

CREATE OR REPLACE FUNCTION insertRow(text, text) returns void AS $$ 
DECLARE 
    name ALIAS FOR $1; 
    label ALIAS FOR $2; 
BEGIN 
    insert into Constantes (objecttype,content) VALUES (name, '{"' || name || '_name":"' || label || '"}'); 
END; 
$$ LANGUAGE plpgsql; 
+0

その他の可能性はありますか? 2つの変数を宣言し、値に影響を与え、それらをクエリに入れます。 – galiolio

+1

私はコードサンプルで答えを編集しました。 –

関連する問題