Еще один вариант - процедура возвращает курсор. Это полезно в том случае, когда вызывающий код ожидает получить данные, выбранные процедурой:

я есть запрос, который запрашивает ReportStartDate и ReportEndDate, поэтому я подумал, что буду использовать переменные в PLSQL. Не уверен, что мне здесь не хватает, но я получаю ошибку:

CLEAR;
DECLARE
    varReportStartDate Date := to_date('05/01/2010', 'mm/dd/yyyy');
    varReportEndDate Date := to_date('05/31/2010', 'mm/dd/yyyy');
BEGIN

    SELECT 
          'Value TYPE', 
          1 AS CountType1, 
          2 AS CountType2, 
          3 AS CountType3 
    FROM DUAL;

    SELECT COUNT (*) 
    FROM CDR.MSRS_E_INADVCH

    WHERE 1=1
    AND ReportStartDate = varReportStartDate 
    AND ReportEndDate = varReportEndDate 
    ;
END;
/

Ошибка:

Error starting at line 2 in command:
Error report:
ORA-06550: line 6, column 5:
PLS-00428: an INTO clause is expected in this SELECT statement
ORA-06550: line 8, column 5:
PLS-00428: an INTO clause is expected in this SELECT statement
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Это происходит как в Toad, так и в SQL Developer.

Как правильно использовать переменные в моем предложении WHERE?

Ответы на вопрос(2)

Ваш ответ на вопрос