【发布时间】:2018-08-28 15:06:24
【问题描述】:
前一周我们开始在课堂上学习存储过程,教授已经布置了一个非常复杂的大作业,此时我很困惑。我什至不确定我到底想在这里完成什么。
我需要为下面的 select 语句创建一个过程
SELECT *
FROM Vehicle, VAN
WHERE SEATCAPACITY > 5
AND MAXIMUMPAYLOAD > 5000;
这是我编译好的存储过程,编译成功。
create or replace PROCEDURE GET_VAN_SP
(
van_cursor OUT SYS_REFCURSOR
) AS
BEGIN OPEN van_cursor for
SELECT Vehicle.VINNUMBER VINNUMBER,
Vehicle.MAKE MAKE,
Vehicle.MODELKIND MODELKIND,
Vehicle.YEARMADE YEARMADE,
Vehicle.RENTALCATEGORYID RENTALCATEGORYID,
Vehicle.COLOR COLOR,
Vehicle.PLATENUMBER PLATENUMBER,
Vehicle.MILEAGE MILEAGE,
Vehicle.TRANSMISIONTYPE TRANSMISIONTYPE,
Vehicle.SEATCAPACITY SEATCAPACITY,
Vehicle.DAILYRENTALCOST DAILYRENTALCOST,
Vehicle.VEHICLESTATUSID VEHICLESTATUSID,
Vehicle.ASSIGNEDAGENCYID ASSIGNEDAGENCYID,
Vehicle.CURRENTAGENCYID CURRENTAGENCYID,
Vehicle.VEHICLETYPE VEHICLETYPE,
Vehicle.PRICE PRICE,
Vehicle.MPH MPH,
Vehicle.HORSEPOWER HORSEPOWER,
Vehicle.MPG MPG,
VAN.VVINNUMBER VVINNUMBER,
VAN.CARGOCAPACITY CARGOCAPACITY,
VAN.MAXIMUMPAYLOAD MAXIMUMPAYLOAD
FROM Vehicle, VAN
WHERE SEATCAPACITY > 5
AND MAXIMUMPAYLOAD > 5000;
END GET_VAN_SP;
这是尝试执行时的错误。
从第 37 行开始的错误命令 - 开始 GET_VAN_SP(5);结尾; 错误报告 - ORA-06550:第 1 行,第 52 列: PLS-00306:调用“GET_VAN_SP”时参数的数量或类型错误 ORA-06550:第 1 行,第 63 列: PLS-00363:表达式 'TO_NUMBER(SQLDEVBIND1Z_1)' 不能用作 分配目标 ORA-06550:第 1 行,第 52 列: PL/SQL:语句被忽略 06550. 00000 - “第 %s 行,第 %s 列:\n%s” *原因:通常是 PL/SQL 编译错误。 *行动:
【问题讨论】:
-
这是用于 SQL-Server 还是 Oracle?它们是两个不同的 RDBMS。
-
为什么你有一个 refcursor 作为你的过程的输出参数?
-
oracle,问题出在我尝试执行该过程时。
-
教授希望我们使用光标,除非我误解了什么