0

以下のストアド プロシージャは、SQL Server で機能します (Oracle 固有の変更を加える前)。このストアド プロシージャは、Oracle でも機能する必要があります。

私が使用するOracle Sql Developerは、「OPEN CURSOR_ FOR」の後の行で文句を言います

どういうわけか、Oracle は、select ステートメントと共用体の両方を「グループ化」し、この全体の結果に対して順序付けを行うことを好まない...

私は何を間違っていますか?私はOracleストアドプロシージャについて少ししか知りません...

create or replace
PROCEDURE GetWorkflowStatusForMatrix(
    p_ApplicationId IN varchar2,    
    CURSOR_ OUT sys_refcursor
)
AS
BEGIN   
    OPEN CURSOR_ FOR
    (
  select ApplicationId || ModuleId || UNIT_ID as StatusKey, UNIT_ID, ApplicationId, ModuleId, Owner, "Level", Action, "Comment", LastModifiedUser, LastModifiedDate 
    from WorkflowStatus where ApplicationId = p_ApplicationId

    union

    select distinct e.ApplicationId + WorkflowId + UnitId as StatusKey, UnitId, e.ApplicationId, WorkflowId, w.Owner, 'Level1', 'Working', EventType, UserId, EventDateTime as LastModifiedDate
    from EventLog e
    join WorkflowStatus w on w.ApplicationId = e.ApplicationId and w.ModuleId = e.WorkflowId and w.UNIT_ID = e.UnitId
    where e.ApplicationId = p_ApplicationId and w.Owner <> '' and w.Action = 'Created'
    )
    order by LastModifiedDate DESC;
END;
4

2 に答える 2

0

Oracleでカーソルを定義する方法を読む必要があります-これが役に立ちます..

http://www.techonthenet.com/oracle/cursors/declare.php

于 2013-04-15T09:17:59.660 に答える