Converting my SQL Server stored procedure to an Oracle stored procedure throws some errors:
Error(13,10): PLS-00428: an INTO clause is expected in this SELECT statement
Error(36,13): PLS-00428: an INTO clause is expected in this SELECT statement
Error(59,16): PLS-00428: an INTO clause is expected in this SELECT statement
SQL Server stored procedure:
CREATE PROCEDURE [dbo].[proname]
@pdate DATE,
@p1 VARCHAR(10),
@p2 INT
AS
BEGIN
SET NOCOUNT ON;
IF @p1 = 'District'
SELECT
ROW_NUMBER() OVER (ORDER BY DueDateUnformatted ASC) AS id,
ActivityName, ActivityKey,
WorkType,
DueDateUnformatted AS DueDate,
Priority, ComplianceDate, AssignmentName,
COUNT(EventKey) AS Total
FROM
dbo.view1
WHERE
DueDateUnformatted < DATEADD(DAY, 1, pdate)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND DistrictKey = @p2
GROUP BY
ActivityName, ActivityKey, WorkType, DueDateUnformatted,
Priority, ComplianceDate, AssignmentName
ELSE IF @p1 = 'Division'
SELECT
ROW_NUMBER() OVER (ORDER BY DueDateUnformatted ASC) AS id,
ActivityName, ActivityKey,
WorkType,
DueDateUnformatted AS DueDate,
Priority, ComplianceDate, AssignmentName,
COUNT(EventKey) AS Total
FROM
dbo.view1
WHERE
DueDateUnformatted < DATEADD(DAY, 1, pdate)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND DistrictKey = @p2
GROUP BY
ActivityName, ActivityKey, WorkType, DueDateUnformatted,
Priority, ComplianceDate, AssignmentName
ELSE IF @p1 = 'Company'
SELECT
ROW_NUMBER() OVER (ORDER BY DueDateUnformatted ASC) AS id,
ActivityKey,
WorkType,
DueDateUnformatted AS DueDate,
Priority, ComplianceDate, AssignmentName,
COUNT(EventKey) AS Total
FROM
dbo.view1
WHERE
DueDateUnformatted < DATEADD(DAY, 1, pdate)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND CompanyKey = @p2
GROUP BY
ActivityName, ActivityKey, WorkType, DueDateUnformatted,
Priority, ComplianceDate, AssignmentName
END
Converted Oracle stored procedure:
CREATE OR REPLACE PROCEDURE procname
(
pdate VARCHAR2,
p2 VARCHAR2,
p3 NUMBER
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
IF p2 = 'District' THEN
SELECT ROW_NUMBER() OVER ( ORDER BY DueDateUnformatted ASC ) id,
ActivityName ,
ActivityKey ,
WorkType ,
DueDateUnformatted DueDate ,
Priority ,
COUNT(EventKey) Total
FROM view1
WHERE DueDateUnformatted < (TO_DATE(pdate)+1) --utils.dateadd('DAY', 1, v_end_date)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND DistrictKey = p3
GROUP BY ActivityName,ActivityKey,WorkType,DueDateUnformatted,Priority;
ELSE
IF p2 = 'Division' THEN
SELECT ROW_NUMBER() OVER ( ORDER BY DueDateUnformatted ASC ) id ,
ActivityName ,
ActivityKey ,
WorkType ,
DueDateUnformatted DueDate ,
Priority ,
COUNT(EventKey) Total
FROM view1
WHERE DueDateUnformatted < (TO_DATE(pdate)+1)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND DivisionKey = p3
GROUP BY ActivityName,ActivityKey,WorkType,DueDateUnformatted,Priority;
ELSE
IF p2 = 'Company' THEN
SELECT ROW_NUMBER() OVER ( ORDER BY DueDateUnformatted ASC ) id ,
ActivityName ,
ActivityKey ,
WorkType ,
DueDateUnformatted DueDate ,
Priority ,
COUNT(EventKey) Total
FROM view1
WHERE DueDateUnformatted < (TO_DATE(pdate)+1)
AND parentEventKey IS NULL
AND inspectiondate IS NULL
AND CompanyKey = p3
GROUP BY ActivityName,ActivityKey,WorkType,DueDateUnformatted,Priority;
END IF;
END IF;
END IF;
END;