Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我得到:Error(8,1):PL/SQL:SQL语句被忽略,Error(8,52):PL/SQL:ORA-00936:此表达式中缺少表达式_Sql_Oracle_Stored Procedures_Plsql_Sql Insert - Fatal编程技术网

我得到:Error(8,1):PL/SQL:SQL语句被忽略,Error(8,52):PL/SQL:ORA-00936:此表达式中缺少表达式

我得到:Error(8,1):PL/SQL:SQL语句被忽略,Error(8,52):PL/SQL:ORA-00936:此表达式中缺少表达式,sql,oracle,stored-procedures,plsql,sql-insert,Sql,Oracle,Stored Procedures,Plsql,Sql Insert,错误8,1:PL/SQL:SQL语句被忽略。错误8,52:PL/SQL: ORA-00936:缺少表达式 您的代码有几个问题: Oracle中没有getdates函数;如果需要当前日期/时间,请使用sysdate,无需选择 该过程有2个输入参数,但插入需要3个;因此,您需要为查询添加一个额外的输入参数;我想你想要房间中的房间数量。房间数量%type 我还建议枚举插入的目标列。我对列名进行了假设,并使用了与列名不同的参数名 因此: 代码中有一点混合-值和insert..select。 第二,您尝试

错误8,1:PL/SQL:SQL语句被忽略。错误8,52:PL/SQL: ORA-00936:缺少表达式


您的代码有几个问题:

Oracle中没有getdates函数;如果需要当前日期/时间,请使用sysdate,无需选择

该过程有2个输入参数,但插入需要3个;因此,您需要为查询添加一个额外的输入参数;我想你想要房间中的房间数量。房间数量%type

我还建议枚举插入的目标列。我对列名进行了假设,并使用了与列名不同的参数名

因此:


代码中有一点混合-值和insert..select。 第二,您尝试在没有参数的情况下调用函数->这意味着getdates根本没有成功编译。 另一件事-为什么要将RES_ID作为参数传递?这是预订表的PK列还是其他列

并且-您调用ROOM_TYPE和ROOM_NUM-没有这样的输入参数


我的建议是传递book in和book out dates/这是函数应该返回的,而不是RES_ID。但这取决于数据模型。

Error8,1:PL/SQL:SQL语句被忽略。错误8,52:PL/SQL:ORA-00936:缺少表达式在PL/SQL中调用函数时不需要select。但是,如果您确实想选择一个变量,那么在Oracle中,您需要从dual中选择getdates。您是要插入一行还是多行?1.没有预定义的函数getdates,2。不能以这种方式在INSERT语句中作为SELECT getdates调用,即使已定义。3.此外,我们不知道您的表总共有多少列。虽然上述函数正确地使用了相同的参数名和表列名,但这是一个非常坏的习惯。您需要为如何使用变量制定一个命名约定,并始终遵守该约定。一个常见的惯例是在参数前面加上p_,我倾向于在参数后面加上like_in或_ot。但你和/或你的团队决定什么就用什么。@Belayer:是的,这是一个很好的观点。我更新了我的答案,将其包括在内。当我这样做时,Error8,1:PL/SQL:SQL语句被忽略,Error8,51:PL/SQL:ORA-00936:missing expression出现。@GMB:我们有时都会落入类似的陷阱。希望我们能共同防止noobs落入它们的陷阱。@harshil:如果看不清楚到底是什么,我们就无法提供帮助。到底是什么给了你这个错误?RES_ID是我在column@harshil-您可以共享预订表结构吗。PK值通常由序列生成,但不作为输入参数传递。我也很好奇这个GETDATES函数究竟应该返回什么。谢谢
SET SERVEROUTPUT ON;
Create or replace procedure add_services (RES_ID IN Reservation.Res_ID %TYPE, ROOM_ID IN ROOM.ROOM_ID%TYPE)

IS
BEGIN

Insert into Reservation values(RES_ID, ROOM_TYPE, select getdates(), ROOM_NUM);
Commit;

End;
create or replace procedure add_services (
    p_res_id    in reservation.res_id%type, 
    p_room_type in room.room_type%type,
    p_room_num  in room.room_num%type
)
is
begin
    insert into reservation(res_id, room_type, room_date, room_num) 
    values(p_res_id, p_room_type, sysdate, p_room_num);
    commit;
end;