0
私はOracleをPostgresに移行しようとしています。オラクルでは、我々はバルクコレクト機能を持ってどこ は、私は普通のSQL関数を作成しました: Postgres:with節付きの条件文
CREATE OR REPLACE FUNCTION get_pub_access_tax(a_person_id mobile_user.id%TYPE)
RETURNS TABLE (tax_id integer) AS
$$
WITH v_pub_tax AS (SELECT tax_id FROM mobile_pub_tax)
select tax_id from v_pub_tax ;
$$ LANGUAGE sql;
ようしかし、データが条件に基づきフェッチされOracleでシナリオがある(例:下記参照)
FUNCTION get_st_tax(
a_st_type IN VARCHAR2)
RETURN mmt_array
IS
v_tax_list mmt_array := mmt_array();
BEGIN
IF a_st_type = 'top-stories' THEN
SELECT t.tax_id BULK COLLECT INTO v_tax_list
FROM mobile_st_tax t;
RETURN v_tax_list;
ELSE
SELECT t.tax_id BULK COLLECT INTO v_tax_list
FROM mobile_st_tax t WHERE t.stream_type=a_stream_type;
RETURN v_tax_list;
END IF;
END;
上記のOracleコードをPostgresに変換するにはどうすればよいですか?
条件を使用していましたが、構文エラー(以下のコード)が表示されました。 以下のコード私はPostgresで実行しようとしましたが、構文エラーです。
CREATE OR REPLACE FUNCTION get_st_tax (a_st_type IN VARCHAR)
RETURNS TABLE (tax_id integer) AS
$$
IF a_stream_type = 'top-stories' THEN
WITH v_tax_list AS (
SELECT t.tax_id FROM mobile_st_tax t)
SELECT tax_id FROM v_tax_list;
ELSE
WITH v_tax_list AS (
SELECT t.tax_id FROM mobile_st_tax t WHERE t.stream_type=a_stream_type)
SELECT tax_id FROM v_tax_list;
END IF;
$$ LANGUAGE SQL;
助けてください。
あなたは第二の機能のあなたのPostgreSQLのバージョンを投稿することができ、それが与えるもの、エラー?私が見ることのできるところから、これには何の問題もないはずです.pgの 'bulk collect'に相当するものはありません。 –
以下のコード私はPostgresで実行しようとしましたが、構文エラーです。 mobile_st_tax FROM( \t \t SELECT t.tax_id AS v_tax_list WITH THEN a_stream_type = 'トップ話' IF $$ \t \t \t AS CREATE OR REPLACE FUNCTIONのget_st_tax(VARCHAR、IN a_st_type) RETURNS表(tax_id整数) t) \t \t SELECT tax_id FROM v_tax_list; v_tax_list WITH ELSE \t \t \t v_tax_list FROM SELECT tax_id \t \t( \t \t mobile_st_tax T WHERE t.stream_type = a_stream_type FROM SELECT t.tax_id)AS。 END IF; \t $$ LANGUAGE SQL; – Pooja