0

SQL Server 2008 固有のクエリがあり、PostgreSQL で同じクエリを実行するにはどうすればよいですか。

INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT pro_ans_frn_pro_id = @new_pro_id , pro_ans_name
FROM profile_answers_old WHERE profile_id = 1

このクエリを PostgreSQL 固有のクエリに変換するにはどうすればよいですか。

4

1 に答える 1

2

PostgreSQL のプレーン SQL には変数がありません。リテラル定数そのままSELECTステートメントに記述できます。

INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT 1234, pro_ans_name     -- 1234 being @new_pro_id (integer)
FROM   profile_answers_old
WHERE  profile_id = 1

元のステートメント ( ) にあるような式は、/ /pro_ans_frn_pro_id = @new_pro_idに評価されます。あなたは確かにそれを望んでいません。TRUEFALSENULL

パラメータを渡したい場合は、次のような関数を作成する必要があります。

CREATE OR REPLACE FUNCTION foo(int)
  RETURNS void LANGUAGE sql AS
$func$
INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT $1, pro_ans_name
FROM   profile_answers_old
WHERE  profile_id = 1;
$func$;

電話:

SELECT foo(1234);

しかし、私は疑います、それはあなたが望むものです。

于 2012-12-27T07:06:49.930 に答える