这是酒店房间预订套餐的一部分(为了简化我删除日期参数的错误):
create or replace package room_reservation
is
PROCEDURE are_free_rooms (
room_capacity IN NUMBER,
room_category IN VARCHAR2);
end;
CREATE OR REPLACE PACKAGE BODY room_reservation IS
PROCEDURE are_free_rooms (
room_capacity IN NUMBER,
room_category IN VARCHAR2
) IS
v_room_id NUMBER;
CURSOR rooms IS SELECT
r.room_id
FROM
rooms r
LEFT JOIN reservations res ON r.room_id = res.room_id
JOIN room_category rc ON rc.category_id = r.room_category
WHERE
r.capacity = room_capacity
AND rc.name = room_category
;
BEGIN
FOR v_room_id IN rooms LOOP
dbms_output.put_line(v_room_id.room_id);
END LOOP;
END;
END;
所有人都在编译,但是当我想调用程序时,我收到了一个错误:
Error starting at line : 1 in command -
begin
ROOM_RESERVATION.ARE_FREE_ROOMS(4,'vip');
end;
Error report -
ORA-01722: invalid number
ORA-06512: at "SYSTEM.ROOM_RESERVATION", line 65
ORA-06512: at line 2
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
我试图解决这个问题而且我不知道我在哪里遇到字符串的问题,因为我喜欢这个问题:
尝试转换a时发生ORA-01722错误 字符串转换为数字,而字符串无法转换 分数。
答案 0 :(得分:1)
问题是<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" android-versionCode="1" version="0.0.1" id="engdiaryalias" >
room_category
表中的 INTEGER 和过程参数中的 VARCHAR2 会导致隐式冲突。
运行查询时,在SQL上下文中,列名的优先级高于绑定参数。
请将输入变量名称从rooms
更改为room_category
以避免冲突