-1
String sql2 = "{? = call public.insertdepttables('"+stall_be.branchcode+"','"+stall_be.stallcode+"','"+stall_be.nooftables+"')}";
System.out.println("below call"+sql2);
cs = conn.prepareCall(sql2);
cs.registerOutParameter(1,Types.INTEGER);
cs.execute();

这段代码执行得很好。但是 Postgres 中的表完全没有受到影响。

我在 Postgres 中的功能是:

DECLARE  
count integer=0;
begin
     IF no_dept>0 THEN     
     LOOP
     insert into t_dept(dept_code,branch_code)values(no_dept,branch_code);

     no_dept=no_dept-1; 
     count=count+1;
     EXIT when no_dept =0;
     END LOOP ;
     END IF;
RETURN count;
end
4

1 回答 1

1

这里有很多问题。

  • 您的函数的参数名称很有可能与列名冲突。但是您将基本函数标头保密。

  • 我想知道为什么你对你的函数名进行模式限定,而不是你的函数中的表名:。你得到什么?public.insertdepttablesinsert into t_deptSHOW search_path

  • 此外,使用准备好的语句来传递函数参数而不是连接字符串,以防止各种错误和 SQL 注入。

  • 但是,您很有可能可以使用简单INSERT的语句替换所有这些generate_series()。但同样,相关信息不是问题。

于 2013-08-23T13:23:05.353 回答