create or replace FUNCTION getMaxID(table_name varchar2(30),maxid varchar2(10))
as
myID int;
myCount int; 
begin
  select count(*) into myCount from SYS_TABLEMAXID where TABLE_NAME=table_name;
  if myCount := 0 then
    insert into SYS_TABLEMAXID values(table_name,2);
    maxid := 1;
  else
    select TABLE_MAXID into myID from SYS_TABLEMAXID where TABLE_NAME=table_name;
    update SYS_TABLEMAXID set TABLE_MAXID = ID+1 where TABLE_NAME=table_name;
    maxid=ID;
  end if;
END getMaxID;

解决方案 »

  1.   

    弄错了.CREATE OR REPLACE PROCEDURE getMaxID(table_name VARCHAR2,maxid VARCHAR2)
    as
    myID int;
    myCount int; 
    begin
      select count(*) into myCount from SYS_TABLEMAXID where TABLE_NAME=table_name;
      if myCount = 0 then
        insert into SYS_TABLEMAXID values(table_name,2);
        maxid := 1;
      else
        select TABLE_MAXID into myID from SYS_TABLEMAXID where TABLE_NAME=table_name;
        update SYS_TABLEMAXID set TABLE_MAXID = ID+1 where TABLE_NAME=table_name;
      end if;
    END getMaxID;
      

  2.   

    create or replace getMaxID(table_name varchar2(30),maxid varchar2(10))
    改成create or replace PROCEDURE  getMaxID(table_name varchar2(30),maxid varchar2(10))
      

  3.   

    getMaxID(table_name varchar2(30),maxid varchar2(10))
    改成getMaxID(table_name in varchar2(30),maxid in varchar2(10))
    是输入还是输出参数
      

  4.   

    CREATE OR REPLACE PROCEDURE getMaxID(table_name VARCHAR2,maxid VARCHAR2)
    as
    ...
      

  5.   

    create or replace procedure getMaxID(table_name in varchar2,maxid out varchar2)
    as
      

  6.   

    create or replace procedure getMaxID(table_name in varchar2,maxid out varchar2)
    as
    myID int;
    myCount int; 
    begin
      select count(*) into myCount from SYS_TABLEMAXID where TABLE_NAME=table_name;
      if myCount = 0 then
        insert into SYS_TABLEMAXID values(table_name,2);
        maxid:= 1;
      else
        select TABLE_MAXID into myID from SYS_TABLEMAXID where TABLE_NAME=table_name;
        update SYS_TABLEMAXID set TABLE_MAXID = ID+1 where TABLE_NAME=table_name;
        maxid:=ID;
      end if;
    end;
      

  7.   

    table_name再数据词典中是个关键词,改个名试试.下面那个语句table_name是个代表属于当前用户的所有表的表名.
    比如select table_name from user_tables