CREATE OR REPLACE  PROCEDURE "CIIC"."USP_WRITELOGTODATABASE" as
     EventId        INTEGER;
    Priority               INTEGER;
    Title                    varchar2(500);
    Message                varchar2(4000);
    machineName            varchar2(100);
    Timestamp                DATE;
    Severity                varchar2(100);
    AppDomainName            varchar2(1000);
    ProcessId                INTEGER;
    ProcessName            varchar2(500);
    Win32ThreadId            INTEGER;
    ThreadName                varchar2(500);
    formattedmessage        varchar2(4000);
    LogId                 out    number
begin
  counter     number;
  SELECT SEQ_TB_CANDIDATE_LOG.NEXTVAL INTO :counter FROM dual
  LogId := counter;    insert into TB_CANDIDATE_Log
    (
        id,
        EventId,
        Priority,
        Title,
        Message,
        Machine,
        Timestamps,
        Severity,
        ApplicationDomain,
        ProcessId,
        ProcessName,
        Win32ThreadId,
        ThreadName,
        ExtendedProperties
    )
    values
    (
        LogId,
        EventId,
        Priority,
        Title,
        Message,
        machineName,
        Timestamp,
        Severity,
        AppDomainName,
        ProcessId,
        ProcessName,
        Win32ThreadId,
        ThreadName,
        formattedmessage
    );
end;
总是提示“行号= 15 列号= 34 错误文本= PLS-00103: 出现符号 "NUMBER"在需要下列之一时:  := . ( @ % ; not null    range default character ” 谢谢 大家了 着急啊!

解决方案 »

  1.   

    SELECT SEQ_TB_CANDIDATE_LOG.NEXTVAL INTO counter FROM dual;
      

  2.   

    begin 
        counter           number; 
    变量定义的地方错了, 应为    counter           number; 
    begin
      

  3.   

    LogId out number;少了个分号?
      

  4.   

    改成下面的试试?CREATE   OR   REPLACE     PROCEDURE   USP_WRITELOGTODATABASE
             (
              EventId                 INTEGER, 
            Priority                               INTEGER, 
            Title                                         varchar2, 
            Message                                 varchar2, 
            machineName                         varchar2, 
            Timestamp                                 DATE, 
            Severity                                 varchar2, 
            AppDomainName                         varchar2, 
            ProcessId                                 INTEGER, 
            ProcessName                         varchar2,
            Win32ThreadId                         INTEGER, 
            ThreadName                                 varchar2, 
            formattedmessage                 varchar2, 
            LogId                                   out         number
            ) as     counter           number;
    begin 
    ................
      

  5.   

    对了,最上面一行不要改,我在这边测试时将上面的东西改掉了
    还是那样的:
    CREATE   OR   REPLACE     PROCEDURE   "CIIC"."USP_WRITELOGTODATABASE"   as 
      

  6.   

    请教 boyd1985 用的是什么开发工具啊,写的语句能显示出关键字来?
      

  7.   

    CREATE   OR   REPLACE     PROCEDURE   "CIIC"."USP_WRITELOGTODATABASE"   as 
              EventId                 INTEGER; 
            Priority                               INTEGER; 
            Title                                         varchar2(500); 
            Message                                 varchar2(4000); 
            machineName                         varchar2(100); 
            Timestamp                                 DATE; 
            Severity                                 varchar2(100); 
            AppDomainName                         varchar2(1000); 
            ProcessId                                 INTEGER; 
            ProcessName                         varchar2(500); 
            Win32ThreadId                         INTEGER; 
            ThreadName                                 varchar2(500); 
            formattedmessage                 varchar2(4000); 
            LogId                                   out         number 
            //我記得如果是OUT,應該放在參數裏吧?樓主請確認一下
    begin 
        counter           number; 
        //這個定義變數應該放begin上面吧
        SELECT   SEQ_TB_CANDIDATE_LOG.NEXTVAL   INTO   :counter   FROM   dual 
        //into 不用加‘:’,後面要用‘;’
        LogId   :=   counter;         insert   into   TB_CANDIDATE_Log 
            ( 
                    id, 
                    EventId, 
                    Priority, 
                    Title, 
                    Message, 
                    Machine, 
                    Timestamps, 
                    Severity, 
                    ApplicationDomain, 
                    ProcessId, 
                    ProcessName, 
                    Win32ThreadId, 
                    ThreadName, 
                    ExtendedProperties 
            ) 
            values 
            ( 
                    LogId, 
                    EventId, 
                    Priority, 
                    Title, 
                    Message, 
                    machineName, 
                    Timestamp, 
                    Severity, 
                    AppDomainName, 
                    ProcessId, 
                    ProcessName, 
                    Win32ThreadId, 
                    ThreadName, 
                    formattedmessage 
            ); 
    end; 
      

  8.   

    習慣在SQL Navigator上寫,不太會樓主這樣的方法