public LinkedList<String[]> callProc(String procname, LinkedList<String> args) {
		LinkedList<String[]> r = new LinkedList<String[]>();
		System.out.println(procname);
		
		try {
			CallableStatement stmt = (CallableStatement) conn.prepareCall(procname);
			// Step-4: register output parameters ...
			
			if (args != null) {
				for (int i = 0; i < args.size(); i++) {
					if (this.isNumeric(args.get(i))) {
						stmt.setInt(i + 1, (int) Float.parseFloat(args.get(i)));
					} else {
						stmt.setString(i + 1, args.get(i));
					}
				}
			}
			
			ResultSet rs = stmt.executeQuery();
			
			ResultSetMetaData rsMetaData = (ResultSetMetaData) rs.getMetaData();
		    int numberOfColumns = rsMetaData.getColumnCount();
		    
		    while (rs.next()) {
				String[] dati = new String[numberOfColumns];
				for (int i = 0; i < numberOfColumns; i++) {
					dati[i] = rs.getString(i + 1);
					System.out.println(rs.getString(i + 1));
				}
				r.add(dati);
			}
		    
		    rs.close();
		    stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return r;
	}