String toSQL() {
		if (sql == null) {
			sql = buff.toString();
		}
		if (params.size() == 0) {
			return sql;
		}
		StringBuilder sb = new StringBuilder();
		// TODO this needs to me more sophisticated
		StringTokenizer st = new StringTokenizer(sql, "?", false);
		int i = 0;
		while (st.hasMoreTokens()) {
			sb.append(st.nextToken());
			if (i < params.size()) {
				Object o = params.get(i);
				if (RuntimeParameter.PARAMETER == o) {
					// dynamic parameter
					sb.append('?');
				} else {
					// static parameter
					sb.append(db.getDialect().prepareParameter(o));
				}
				i++;
			}
		}
		return sb.toString();
	}