Sql 创建存储过程编译错误

Sql 创建存储过程编译错误,sql,database,oracle,stored-procedures,Sql,Database,Oracle,Stored Procedures,我试图在oracle中创建一个存储过程,但每次尝试将其添加到数据库时,都会收到一个错误,即procedure created with complication errors 我无法执行它(也会出错)。我想我的实际程序出了问题,但我想不出来。以下是我正在尝试创建的过程: CREATE PROCEDURE SPBILL @CLIENT_ID VARCHAR2(6) AS BEGIN SELECT C.CLIENT_NAME, B.ROOM_ID, R.ROOM_COST, T.TREAT

我试图在oracle中创建一个存储过程,但每次尝试将其添加到数据库时,都会收到一个错误,即
procedure created with complication errors

我无法执行它(也会出错)。我想我的实际程序出了问题,但我想不出来。以下是我正在尝试创建的过程:

CREATE PROCEDURE SPBILL @CLIENT_ID VARCHAR2(6)
AS 
BEGIN
    SELECT C.CLIENT_NAME, B.ROOM_ID, R.ROOM_COST, T.TREAT_NAME, T.TREAT_COST, (ROOM_COST*(B_END_DATE-B_START_DATE)+TREAT_COST) AS INVOICE
    FROM CLIENTS C, ROOMS R, TREATMENTS T, BOOKING B, PRESCRIPTION P
    WHERE C.CLIENT_ID=B.CLIENT_ID
    AND R.ROOM_ID=B.ROOM_ID
    AND B.CLIENT_ID=P.CLIENT_ID
    AND P.TREAT_ID=T.TREAT_ID
    AND C.CLIENT_ID=@CLIENT_ID
END;
试试下面这样

CREATE PROCEDURE SPBILL (CLIENT_ID VARCHAR2)
AS 
BEGIN
   SELECT C.CLIENT_NAME, B.ROOM_ID, R.ROOM_COST, T.TREAT_NAME, T.TREAT_COST, (ROOM_COST*(B_END_DATE-B_START_DATE)+TREAT_COST) AS INVOICE
   FROM CLIENTS C, ROOMS R, TREATMENTS T, BOOKING B, PRESCRIPTION P
   WHERE C.CLIENT_ID=B.CLIENT_ID
   AND R.ROOM_ID=B.ROOM_ID
   AND B.CLIENT_ID=P.CLIENT_ID
   AND P.TREAT_ID=T.TREAT_ID
   AND C.CLIENT_ID= CLIENT_ID 
END;

这一定很愚蠢,但我认为这就是您声明变量
@CLIENT\u ID

您是否尝试过这样声明变量
DELCARE@CLIENT\u ID VARCHAR2(6)


查看此链接

是否检查select语句是否运行正常?@DevelopmentIsMyPassion是的,它确实运行数据库中的客户端id类型是什么?@user311230如果删除最后一个And子句is和C.Client\u id=Client\u id,然后尝试创建进程,会发生什么again@user3112130同时尝试删除客户端ID VARCHAR2(6)再创建一个过程你甚至可以用一个select语句创建一个简单的过程吗?您确定您的查询没有引发任何错误吗?@DevelopmentIsMyPassion参数不应具有
(6)
,这仅适用于变量声明。