create or alter procedure RJZY_SAVE (
  JILU varchar(10),
  ZHUYI varchar(10),
  TZHUYI date,
  K integer,
  SHIJIAN date not null) 
as
begin
declare @i integer   //这是第9句
set @i=0
while @i<k
begin
if exists (select from rj where date=Tzhuyi+i)
insert into rj (shijian, jilu, zhuyi) values (@shijian,@jilu,@zhuyi)
else
update
set zhuyi=@zhuyi
end
set @i=@i+1
end
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 9, column 1.
declare. 

解决方案 »

  1.   

    update  <---
    set zhuyi=@zhuyi 
      

  2.   

    update [TAble]
    set zhuyi=@zhuyi 
      

  3.   

    存储过程的整型应该是int,不是integer  
      

  4.   

    Oracle还是SQL?Oracle是返回Number,这里应该是int
      

  5.   

    可以用integer的create or alter procedure RJZY_SAVE ( 
      @JILU varchar(10), 
      @ZHUYI varchar(10),      <---参数要加@
      @TZHUYI date, 
      @K integer, 
      @SHIJIAN date not null) 
    as 
      

  6.   

    是Firebird数据库,改了那里的问题,还有其他的问题:
    create or alter procedure NEW_PROCEDURE (
        TZHUYI date,
        K integer,
        ZHUYI varchar(10),
        JILU varchar(10),
        SHIJIAN date not null) 
    as
    declare variable I integer;
    begini=0;
    while (i<=k)
    begin                        //这里出错了。
    if exists (select from rj where date=Tzhuyi+i);
    insert into rj (shijian, jilu, zhuyi) values (:shijian,:jilu,:zhuyi)
    else
    update
    set zhuyi=:zhuyi
    end
    i=i+1
    end
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 13, column 1.
    begin.
      

  7.   

    create or alter procedure NEW_PROCEDURE (
        TZHUYI date,
        K integer,
        ZHUYI varchar(10),
        JILU varchar(10),
        SHIJIAN date not null)
    as
    declare variable I integer;
    begini=0;
    while (i <=k) do //这里少了个do
    begin                        //这里出错了。
    if exists (select from rj where date=Tzhuyi+i);
    insert into rj (shijian, jilu, zhuyi) values (:shijian,:jilu,:zhuyi)
    else
    update
    set zhuyi=:zhuyi
    end
    i=i+1
    end 
      

  8.   

    create or alter procedure NEW_PROCEDURE (
        TZHUYI date,
        K integer,
        ZHUYI varchar(10),
        JILU varchar(10),
        SHIJIAN date not null)
    as
    declare variable I integer;
    begini=0;
    while (i <=k) do //这里少了个do
    begin                        //这里出错了。
    if exists (select from rj where date=Tzhuyi+i);
    insert into rj (shijian, jilu, zhuyi) values (:shijian,:jilu,:zhuyi)
    else
    update 表名//这里也少个表名称
    set zhuyi=:zhuyi
    end
    i=i+1
    end 
      

  9.   

    create or alter procedure NEW_PROCEDURE (
      TZHUYI date,
      K integer,
      ZHUYI varchar(10),
      JILU varchar(10),
      SHIJIAN date not null) 
    as
    declare variable I integer;
    begin
    i=0;
    while (i<=k) do
    begin
    if (exists (select shijian from rj where shijian=Tzhuyi+i)) then
    insert into rj (shijian, jilu, zhuyi) values (:shijian,:jilu,:zhuyi);
    else
    update rj
    set zhuyi=:zhuyi
    end    //这里出错了。
    i=i+1
    end
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 18, column 1.
    end.
      

  10.   

    记得要结贴呀,你上一个贴都没结呢create procedure RJZY_SAVE ( 
      @JILU varchar(10), 
      @ZHUYI varchar(10), 
      @TZHUYI DateTime, 
      @K integer, 
      @SHIJIAN DateTime) 
    as 
    begin 
    declare @i integer   set @i=0 
    while @i <@K 
    begin 
      if exists (select * from rj where SHIJIAN=@TZHUYI+@i) 
        insert into rj (shijian, jilu, zhuyi) values (@shijian,@jilu,@zhuyi) 
      else 
        update rj set zhuyi=@zhuyi where SHIJIAN=@TZHUYI+@i   set @i=@i+1 
    end 
    end 
      

  11.   

    是Firebird数据库,不用@,可能是循环出了问题。
    create or alter procedure NEW_PROCEDURE (
        TZHUYI date,
        K integer,
        ZHUYI varchar(100),
        JILU varchar(200),
        SHIJIAN date not null) 
    as
    declare variable I integer;
    begin
     i=0;
    while (i<=k) do
    begin
    if (exists (select shijian from rj where shijian=:Tzhuyi+i)) then
    insert into rj (shijian, jilu, zhuyi) values (:shijian,:jilu,:zhuyi);
    else
    update rj
    set zhuyi=:zhuyi
       where
     shijian=:shijian;
    i=i+1;
    end
    endColumn does not belong to referenced table.
    Dynamic SQL Error.
    SQL error code = -206.
    Column unknown.
    I.
    At line 13, column 58.
    这样也不行:
    create or alter procedure RJZY_SAVE (
        TZHUYI date,
        K integer,
        ZHUYI varchar(100),
        JILU varchar(200),
        SHIJIAN date not null) 
    as
    declare variable TDATE date;
    declare variable I integer;
    begin
    I=0;
    while (I<=k) do
    begin
     select shijian from rj where shijian = :Tzhuyi+I
      into :tdate;
     if (:tdate is not null) then
     begin
      update rj set 
        zhuyi = :zhuyi
      where
        shijian=:shijian; 
     end
     else
     begin
      insert into rj (shijian, jilu, zhuyi) 
        values (:shijian, :jilu, :zhuyi);
     end
     I=I+1;
    end
    end
    Column does not belong to referenced table.
    Dynamic SQL Error.
    SQL error code = -206.
    Column unknown.
    I.
    At line 15, column 3.