2011-11-15 14 views
3

誰でも次の構文が間違っていることを教えてくれますか?私はストアドプロシージャで単純なSELECT文を実行しようとしています。Oracleストアドプロシージャ

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:次のいずれかが予期されるときに、シンボル "end-of-file"が検出されました(goto if endループヌルプラグマレイズリターンを選択して更新中に< <閉じる閉じる現在、削除フェッチロックインサートをオープンロールバックセーブポイントのセットは、あなたがORDER BY 2 asc

    後にセミコロンを逃している

答えて

4

パイプパージをマージまた、あなたが適切にあなたのOUTパラメータを宣言する必要がforallをコミットSQL実行します。

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;