没环境测试,试试:-----------------------------------------------------------------
CREATE OR REPLACE PROCEDURE TR_ADD_Maintenance(
TerminalID       NUMBER,
FaultInfo        VARCHAR2(50),
FaultTime        DATE,
ReportEmployee   VARCHAR2(20),
StartRepairTime  DATE,
FinishRepairTime DATE,
RepairStatus     VARCHAR2(8),
RepairResult     VARCHAR2(20),
RepairEmployee   VARCHAR2(20),
Ret   OUT        NUMBER)
AS
BEGIN
    Ret := -1;
    
    IF EXISTS(select 1 from TR_Maintenance where TerminalID=TerminalID)
        RETURN;
    END IF;    insert into TR_Maintenance(TerminalID, FaultInfo, FaultTime, ReportEmployee, StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee)
    values(TerminalID,FaultInfo,FaultTime,ReportEmployee,StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee);

    Ret := 1;    RETURN;

END TR_ADD_Maintenance;

解决方案 »

  1.   

    Compilation errors for PROCEDURE DEV.TR_ADD_MAINTENANCEError: PLS-00103: 出现符号 "TERMINALID"在需要下列之一时:
            ( ; is with authid
              as cluster compress order using compiled wrapped external
              deterministic parallel_enable pipelined
           符号 "is" 被替换为 "TERMINALID" 后继续。
    Line: 2
    Text: TerminalID NUMBER;Error: PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
            := . ( @ % ; not null
              range default character
    Line: 11
    Text: Ret OUT NUMBER-----------------------------------------------------
    我先把逗号都改为";",然后还有以上的错误,
      

  2.   

    --测试一下
    --输入输出参数的变量有类型就好了
    CREATE OR REPLACE PROCEDURE TR_ADD_Maintenance(
    TerminalID       NUMBER,
    FaultInfo        VARCHAR2(50),
    FaultTime        DATE,
    ReportEmployee   VARCHAR2,
    StartRepairTime  DATE,
    FinishRepairTime DATE,
    RepairStatus     VARCHAR2,
    RepairResult     VARCHAR2,
    RepairEmployee   VARCHAR2,
    Ret   OUT        NUMBER)
    AS
      

  3.   

    VARCHAR2(50),  输入输出参数,变量不要有长度
      

  4.   

    修改过的:
    CREATE OR REPLACE PROCEDURE TR_ADD_Maintenance(
    TerminalID NUMBER,
    FaultInfo VARCHAR2(50),
    FaultTime DATE,
    ReportEmployee VARCHAR2,
    StartRepairTime DATE,
    FinishRepairTime DATE,
    RepairStatus VARCHAR2,
    RepairResult VARCHAR2,
    RepairEmployee VARCHAR2,
    Ret OUT NUMBER)
    AS
    BEGIN
    Ret := -1;IF EXISTS(select 1 from TR_Maintenance where TerminalID=TerminalID)
    RETURN;
    END IF;insert into TR_Maintenance(TerminalID, FaultInfo, FaultTime, ReportEmployee, StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee)
    values(TerminalID,FaultInfo,FaultTime,ReportEmployee,StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee);Ret := 1;RETURN;END TR_ADD_Maintenance;
    //--错误如下
    Compilation errors for PROCEDURE DEV.TR_ADD_MAINTENANCEError: PLS-00103: 出现符号 "("在需要下列之一时:
            := . ) , @ % default
              character
           符号 ":=" 被替换为 "(" 后继续。
    Line: 3
    Text: FaultInfo VARCHAR2(50),Error: PLS-00103: 出现符号 "RETURN"在需要下列之一时:
            then and or
           符号 "then" 被替换为 "RETURN" 后继续。
    Line: 17
    Text: RETURN;
    //------------------
    辛苦大家了~~再次谢谢~~
      

  5.   

    FaultInfo VARCHAR2,--把长度去掉
      

  6.   

    CREATE OR REPLACE PROCEDURE TR_ADD_Maintenance(
    TerminalID NUMBER,
    FaultInfo VARCHAR2,
    FaultTime DATE,
    ReportEmployee VARCHAR2,
    StartRepairTime DATE,
    FinishRepairTime DATE,
    RepairStatus VARCHAR2,
    RepairResult VARCHAR2,
    RepairEmployee VARCHAR2,
    Ret OUT NUMBER)
    AS
    BEGIN
    Ret := -1;IF EXISTS(select 1 from TR_Maintenance where TerminalID=TerminalID)
    RETURN;
    END IF;insert into TR_Maintenance(TerminalID, FaultInfo, FaultTime, ReportEmployee, StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee)
    values(TerminalID,FaultInfo,FaultTime,ReportEmployee,StartRepairTime,FinishRepairTime,RepairStatus,RepairResult,RepairEmployee);Ret := 1;RETURN;END TR_ADD_Maintenance;
      

  7.   

    Compilation errors for PROCEDURE DEV.TR_ADD_MAINTENANCEError: PLS-00103: 出现符号 "RETURN"在需要下列之一时:
            then and or
           符号 "then" 被替换为 "RETURN" 后继续。
    Line: 17
    Text: RETURN;
      

  8.   

    IF EXISTS(select 1 from TR_Maintenance where TerminalID=TerminalID)
    then --缺少then
    RETURN;
    END IF;
      

  9.   

    晕了。才发现。从第六楼就错了。。
    再次贴出这帖子需要修改的存储过程
    谢谢大家~~
    CREATE PROCEDURE [dbo].[ADD_TR_Info]
    @TerminalID int,
    @Province varchar(10),
    @City varchar(20),
    @Address varchar(50),
    @StockTime datetime,
    @Manufacturer varchar(20),
    @Sort varchar(10),
    @Model varchar(10),
    @PutTime datetime,
    @Re varchar(100),
    @Active int,
    @BeginTime datetime,
    @EndTime datetime,
    @Ipaddress varchar(20)
    AS
    if((select count(*) from TR_Info where TerminalID = @TerminalID) > 0)
    BEGIN
    return -1
    END
    else
    BEGIN
    insert into TR_Info values(@TerminalID,@Province,@City,@Address,@StockTime,@Manufacturer,@Sort,@Model,@PutTime,@Re,@Active,@BeginTime,@EndTime,@Ipaddress)
    insert into TR_STATUS(TERMINALID,IPADDRESS,STATUS) values (@TERMINALID,@IPADDRESS,'000000000000000000000000000000000')
    return 1
    END
    GO
      

  10.   

    楼主
    按照libin_ftsafe(子陌红尘:当libin告别ftsafe) 和我告诉你的一些东西
    你完全可以自己修改好的
    难道你的每个存储过程都要别人改好发给你么
    那你不是什么都没有学到
      

  11.   

    CREATE OR REPLACE PROCEDURE ADD_TR_Info(
    TerminalID int,
    Province varchar2,
    City varchar2,
    Address varchar2,
    StockTime date,
    Manufacturer varchar2,
    Sort varchar2,
    Model varchar2,
    PutTime date,
    Re varchar2,
    Active int,
    BeginTime date,
    EndTime date,
    Ipaddress varchar2,
    Ret OUT NUMBER
    )
    is
    begin
    Ret := -1;
    if EXISTS((select count(*) from TR_Info where TerminalID = TerminalID) > 0)
    then
    return ;
    END IF;
    BEGIN
    insert into TR_Info values(TerminalID,Province,City,Address,StockTime,Manufacturer,Sort,Model,PutTime,Re,
    Active,BeginTime,EndTime,Ipaddress);
    insert into TR_STATUS(TERMINALID,IPADDRESS,STATUS) values (TERMINALID,IPADDRESS,'000000000000000000000000000000000');
    Ret := 1;
    return ;
    END;
      

  12.   

    is
    v_i int;
    begin
    Ret := -1;
    select count(*) into v_i from TR_Info where TerminalID = TerminalID;
    insert into TR_Info values(TerminalID,Province,City,Address,StockTime,Manufacturer,Sort,Model,PutTime,Re,
    Active,BeginTime,EndTime,Ipaddress);
    insert into TR_STATUS(TERMINALID,IPADDRESS,STATUS) values (TERMINALID,IPADDRESS,'000000000000000000000000000000000');
    Ret := 1;
    EXCEPTION
          WHEN no_Data_found
          THEN
             
             null;END;