Oracle存储过程
谁能告诉我下面的语法有什么问题吗?我只是想在存储过程中运行一个简单的SELECT语句Oracle存储过程,oracle,stored-procedures,express,Oracle,Stored Procedures,Express,谁能告诉我下面的语法有什么问题吗?我只是想在存储过程中运行一个简单的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
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:在预期以下情况之一时遇到符号“文件结束”:(如果循环mod null pragma raise return select update with with您在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;