我想实现的是传入一个表名,一个数字型的列名,返回该列的最大值.函数是:
CREATE or replace  FUNCTION f_hoa_getNextID(tableName IN varchar2,colID IN varchar2 )
RETURN NUMBER
IS
NextIDValue NUMBER(10);
SqlString varchar2(500);
BEGIN
SqlString := 'Select nvl(max('|| colID ||'),0) into '|| NextIDValue || ' from ' ||tableName;
execute immediate Sqlstring;
RETURN (NextIDValue + 1);
END;是不是SqlString := 'Select nvl(max('|| colID ||'),0) into '|| NextIDValue || ' from ' ||tableName;
错了啊,我用
SqlString := 'Select '|| NextIDValue || ':=nvl(max('|| colID ||'),0)  from ' ||tableName;
也不行.帮帮啊

解决方案 »

  1.   

    动态sql 不能使用 select into,用下面方法试下:SqlString := 'Select nvl(max('|| colID ||'),0)  || ' from ' ||tableName;
    execute immediate Sqlstring into NextIDValue ;
      

  2.   

    execute immediate sql into 输出变量列表
    using 绑定变量列表
      

  3.   

    SqlString := 'Select nvl(max('|| colID ||'),0)  || ' from ' ||tableName;
    execute immediate Sqlstring into NextIDValue ;