2

postgresql 9 関数の移行中に、次の問題に直面しました。Oracle では、複雑な選択ステートメントでのみ WITH を使用できます。一方、postgres (および MS SQL 2008 も) では、WITH と INSERT (更新、削除) を一緒に使用できます。

例:

     WITH prerows AS ( SELECT ObjectID, LoginID, Param FROM devices D
                         WHERE D.DevNum = '0003' AND ObjectID IS NULL )

     INSERT INTO dev_sub( ObjectID, LoginID, Param )
     SELECT ObjectID, LoginID, Param FROM prerows;

クエリは PostgreSQL 9.2 では正常に動作しますが、Oracle 11 XE ではエラーを書き込みます: 'ORA-00928: SELECT キーワードがありません'。多分私は何かが恋しいですか?私はオラクルが好きで、WITH ステートメントと INSERT コマンドを組み合わせることができないことを知っているのは残念です。

よろしく、アンソニー

4

2 に答える 2

1

試す:

 INSERT INTO dev_sub( ObjectID, LoginID, Param )

 WITH prerows AS ( SELECT ObjectID, LoginID, Param 
                   FROM devices D
                   WHERE D.DevNum = '0003' 
                     AND ObjectID IS NULL )
 SELECT ObjectID, LoginID, Param FROM prerows;
于 2013-05-16T10:38:43.550 に答える