1.存储过程
-- DROP PROCEDURE DB2ADMIN.GETNODENAMEPROC;
CREATE PROCEDURE GETNODENAMEPROC ( IN v_clid VARCHAR(20),IN v_nodeid VARCHAR(20),OUT v_nodename VARCHAR(1000))
LANGUAGE SQL
SPECIFIC GETNODENAMEPROCMODIFIES SQL DATA------------------------------------------------------------------------
-- SQL 取得节点名称存储过程
------------------------------------------------------------------------P1: BEGINSET v_nodename='';FOR T1 AS
(
  SELECT name FROM xscl_mx WHERE clid=v_clid AND nodeid=v_nodeid
    UNION ALL
      SELECT name FROM xscl_kg WHERE clid=v_clid AND (nodeid1=v_nodeid OR nodeid2=v_nodeid)
    UNION ALL
          SELECT name FROM xscl_drq WHERE clid=v_clid AND nodeid =v_nodeid
        UNION ALL
          SELECT name FROM xscl_cldkq WHERE clid=v_clid AND (nodeid1=v_nodeid OR nodeid2=v_nodeid)
      UNION ALL
          SELECT name FROM xscl_bldkq WHERE clid=v_clid AND (nodeid1=v_nodeid OR nodeid2=v_nodeid)
      UNION ALL
          SELECT name FROM xscl_byq2 WHERE clid=v_clid AND (nodeid1=v_nodeid OR nodeid2=v_nodeid)
      UNION ALL
          SELECT name FROM xscl_byq3 WHERE clid=v_clid AND (nodeid1=v_nodeid OR nodeid2=v_nodeid OR nodeid3=v_nodeid)
      UNION ALL
          SELECT name FROM xscl_fh  WHERE clid=v_clid AND nodeid =v_nodeid
      UNION ALL
          SELECT name FROM xscl_line WHERE clid=v_clid AND  (nodeid1=v_nodeid OR nodeid2=v_nodeid)
      UNION ALL
          SELECT name FROM xscl_fdj WHERE clid=v_clid AND nodeid =v_nodeid
 
) DO
   
SET v_nodename=v_nodename||T1.name||';';END FOR;
END P1;
2.java调用
                con=clsDataOperate.gConection();stmt=con.prepareCall("{ call GETNODENAMEPROC (?,?,?) }");
stmt.setString(1, "888888");
stmt.setString(2, "29931node9");
stmt.registerOutParameter(3, java.sql.Types.VARCHAR);stmt.execute();String nodename=stmt.getString(3);//=new String(stmt.getString(3).getBytes("ISO-8859-1"),"GBK");
System.out.println("nodename:"+nodename);
直接查询是没有乱码的,试过java程序中转码没有成功,想问一下存储过程能否声明字符编码?