我想「聯盟」多個SELECT語句在下面的存儲過程「聯盟」多重選擇查詢在Oracle存儲過程
Create or replace PROCEDURE procedure1
as
BEGIN
SELECT b.EntityName,
c.StateLaneName,
c.ConsiderEntityOwnership,
a.InitialState,
d.StateName,
e.EventName,
1 AS Discriminator,
NULL AS TransitionSeq,
NULL AS TransitionName,
k.WorkflowActionSeq AS ActionSeq,
l.ActionName AS ActionName,
l.ClassPath AS ClassPath,
NULL AS MessageKey,
NULL AS NextStateName
FROM Workflow a,
Entity b,
WorkflowStateLane c,
WorkflowState d,
WorkflowEvent e,
WorkflowEventAction k,
WorkflowAction l
WHERE a.WorkflowEntityId = b.EntityId
AND a.WorkflowStateLaneId = c.WorkflowStateLaneId
AND a.WorkflowStateId = d.WorkflowStateId
AND a.WorkflowEventId = e.WorkflowEventId
AND a.WorkflowId = k.WorkflowId
AND k.WorkflowActionId = l.WorkflowActionId
AND k.TransitionActionType = 1
UNION
(SELECT b.EntityName,
c.StateLaneName,
c.ConsiderEntityOwnership,
a.InitialState,
d.StateName,
e.EventName,
2 AS Discriminator,
NULL AS TransitionSeq,
NULL AS TransitionName,
k.WorkflowActionSeq AS ActionSeq,
l.ActionName AS ActionName,
l.ClassPath AS ClassPath,
NULL AS MessageKey,
NULL AS NextStateName
FROM Workflow a,
Entity b,
WorkflowStateLane c,
WorkflowState d,
WorkflowEvent e,
WorkflowEventAction k,
WorkflowAction l
WHERE a.WorkflowEntityId = b.EntityId
AND a.WorkflowStateLaneId = c.WorkflowStateLaneId
AND a.WorkflowStateId = d.WorkflowStateId
AND a.WorkflowEventId = e.WorkflowEventId
AND a.WorkflowId = k.WorkflowId
AND k.WorkflowActionId = l.WorkflowActionId
AND k.TransitionActionType = 2);
END proceure1;
當我編譯我得到一個錯誤 PLS-00428:INTO子句預計在這個選擇功能。 我是Oracle的新手。請幫幫我。
所以如果u去選擇後者,我需要做這麼多的聲明是它? – user2380844
是的,在後一選項中,您需要爲檢索的每個列聲明一個變量。但是,該解決方案僅適用於檢索單行的情況。由於你的問題的介紹談到UNION,你可能會檢索幾行。那麼你需要一個不同的方法。你想利用檢索到的數據做什麼? – Codo
是生成多行。你能解釋一下這種方法嗎?嘗試使用表中的不同TransitionActionType和Discriminator列的聯合表 – user2380844