sql >> データベース >  >> RDS >> PostgreSQL

OracleプロシージャのPostgreSQLへの移植

    Postgresがその更新構造をサポートしているとは思いません(私が試した単純なテストは同じエラーで失敗します)。あなたはこのようなことをしなければならないかもしれません:

    CREATE OR REPLACE FUNCTION DATA_UPDATE
      (mission NUMERIC,
       task NUMERIC)
       RETURNS void as '
    DECLARE
       offScheduled int4;
       totalReceivers int4; 
    BEGIN
    IF mission IS NOT NULL THEN
      select COALESCE(SUM(RR.TRQ_FUEL_OFFLOAD),0),
      COALESCE(SUM(RR.TRQ_NUMBER_RECEIVERS),0) into offScheduled, totalReceivers 
      FROM REFUELING_REQUEST RR, MISSION_REQUEST_PAIRING MRP
                 WHERE MO.MSN_INT_ID = MRP.MSN_INT_ID
                   AND MO.MO_INT_ID = MRP.MO_INT_ID
                   AND MRP.REQ_INT_ID = RR.REQ_INT_ID;
    
     UPDATE MISSION_OBJECTIVE MO
         SET MO.MO_TKR_TOTAL_OFF_SCHEDULED = offScheduled,
              MO.MO_TKR_TOTAL_RECEIVERS = totalReceivers 
         WHERE MO.MSN_INT_ID = mission
         AND MO.MO_INT_ID = task ;
    END IF;
    END;
    ' LANGUAGE plpgsql;
    

    ...ロジックをひどく壊していないと仮定します;)

    パラメータの定義方法と戻り値のタイプを自由に変更しました(実際には関数から何も返さないように見えるため)

    編集:おっと、select intoに間違った構成を使用しました ...



    1. MySQLで文字列内の部分文字列の位置を見つける3つの方法

    2. 「トリニダード・トバゴ」を使用したOracleSQLDeveloperでの変数置換を回避する方法

    3. MySQL PHPのクエリに配列を渡すことにより、OR条件を動的に作成します

    4. データベースメールプロファイル(SSMS)を作成する