create or replace
PROCEDURE "P_PXPAPER_HIS_INSERT"
(
  PARAM_HIS_ID IN OUT VARCHAR2,
PARAM_SCORE IN NUMBER := NULL,
PARAM_NUMBER IN NUMBER := NULL,
PARAM_PAPER_ID IN VARCHAR2 := NULL,
PARAM_USERID IN VARCHAR2 := NULL,
PARAM_MEMO IN VARCHAR2 := NULL,
PARAM_CREATE_TIME IN DATE := SYSDATE  
)
AS
BEGIN   
 IF ISNULLOREMPTY(PARAM_HIS_ID)=1 THEN
SELECT GET_CURRENT_SERVER_ID || '-' || "SEQ_PXPAPER_HIS".NEXTVAL INTO PARAM_HIS_ID FROM DUAL;
 ELSE
--保持原来值
    PARAM_HIS_ID:=PARAM_HIS_ID;
 END IF;
 INSERT INTO "PXPAPER_HIS"(
"HIS_ID","SCORE","NUMBER","PAPER_ID","USERID","MEMO","CREATE_TIME"
 ) VALUES (
PARAM_HIS_ID,PARAM_SCORE,PARAM_NUMBER,PARAM_PAPER_ID,PARAM_USERID,PARAM_MEMO,PARAM_CREATE_TIME
 );END;/
create or replace
PROCEDURE "P_PXPAPER_HIS_DELETE"
(
PARAM_HIS_ID VARCHAR2
)
AS
BEGIN
DELETE FROM "PXPAPER_HIS"
WHERE
"HIS_ID" = PARAM_HIS_ID;
END;/
错误信息:ORA-24344: success with compilation errorProcedure execution failed
ORA-06550: line 1, column 38:
PLS-00905: object VIVE_WM.P_PXPAPER_HIS_INSERT is invalid
ORA-06550: line 1, column 28:
PL/SQL: Statement ignored查询时间: 0.047ms帮帮忙呗,很郁闷,不知道怎么回事

解决方案 »

  1.   

    object VIVE_WM.P_PXPAPER_HIS_INSERT is invalid
    你这存储过程编译没通过,检查P_PXPAPER_HIS_INSERT 
      

  2.   

    貌似oracle里创建存储过程内容是在包里,跟mssql不一样。
      

  3.   

    把报错代码贴出来
    显示错误错误代码用show error
      

  4.   

    把你过程的参数后面的赋值语句给去掉PARAM_SCORE IN NUMBER ,
        PARAM_NUMBER IN NUMBER ,
        PARAM_PAPER_ID IN VARCHAR2 ,
        PARAM_USERID IN VARCHAR2 ,
        PARAM_MEMO IN VARCHAR2 ,
      

  5.   

    PARAM_CREATE_TIME IN DATE := SYSDATE  改成PARAM_CREATE_TIME IN DATE
    在ORACLE  存储过程里面in参数不能被赋值也不能赋缺省值
      

  6.   

    如果你需要给in参数赋缺省值只能使用default关键字 
    例如
    PARAM_CREATE_TIME IN DATE default SYSDATE,
    PARAM_SCORE IN NUMBER default null 
      

  7.   


    show error 这个是命令的那种吧,我没密码登不上
      

  8.   

    你要赋缺省值把:=换成default 关键字
    sql 窗口提示什么错误?
      

  9.   

    你是sqlserver转ORACLE ?DELETE FROM "PXPAPER_HIS"
        WHERE
            "HIS_ID" = PARAM_HIS_ID;
    改成
    DELETE  "PXPAPER_HIS"
        WHERE
            "HIS_ID" = PARAM_HIS_ID;