Хранимая процедура Oracle - PullRequest
3 голосов
/ 15 ноября 2011

Может ли кто-нибудь помочь мне, сказав, что не так со следующим синтаксисом? Я просто пытаюсь запустить простой оператор SELECT в хранимой процедуре.

CREATE OR REPLACE PROCEDURE PVSSRDB.GETBATTERYSTATUSFORALLLOGGERS
(
  p_Logger OUT e.comment_,
  p_tStamp OUT h.ts,
  p_Val    OUT h.value_number
)
AS
BEGIN
  select 
    e.comment_,
    max(h.ts),
    avg(h.value_number)
INTO
  p_Logger,
  p_tStamp,
  p_Val
FROM 
  PVSSRDB.ELEMENTS e inner join PVSSRDB.DB15MINHISTORY_00100009 h on h.element_id =e.element_id
WHERE 
  e.element_name like 'System1:H%.BatteryCondition'
GROUP BY
  e.comment_
ORDER by 2 asc
END GETBATTERYSTATUSFORALLLOGGERS;

Я продолжаю получать те же 3 ошибки, заявляя:

  • Ошибка (9,3): PL / SQL: оператор SQL игнорируется
  • Ошибка (23,18): PL / SQL: ORA_00933: команда SQL неправильно завершена
  • Ошибка (24,34): PLS-00103: Обнаружен символ «конец файла» при ожидании одного из следующих действий: (начинайте регистр, объявляйте завершение исключения конца для goto, если цикл mod null прагма поднять return select update с << продолжить закрыть текущий удалить выборку заблокировать вставить открыть точку отката сохранить набор sql выполнить коммит для очистки канала слияния </li>

1 Ответ

4 голосов
/ 15 ноября 2011

Вы пропускаете точку с запятой после ORDER BY 2 asc

Также вам необходимо правильно объявить параметры OUT.

CREATE OR REPLACE 
PROCEDURE PVSSRDB.GETBATTERYSTATUSFORALLLOGGERS (
   p_Logger OUT PVSSRDB.ELEMENTS.comment_%TYPE,
   p_tStamp OUT PVSSRDB.DB15MINHISTORY_00100009.ts%TYPE,
   p_Val    OUT PVSSRDB.DB15MINHISTORY_00100009.value_number%TYPE
) 
AS 
BEGIN
   select e.comment_,
          max(h.ts),
          avg(h.value_number) 
     INTO p_Logger,
          p_tStamp,
          p_Val 
     FROM PVSSRDB.ELEMENTS e 
    inner join PVSSRDB.DB15MINHISTORY_00100009 h on (h.element_id =e.element_id)
    WHERE e.element_name like 'System1:H%.BatteryCondition' 
    GROUP BY   e.comment_ 
    ORDER by 2 asc; 
END GETBATTERYSTATUSFORALLLOGGERS; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...