short SetParam::process(SqlciEnv * sqlci_env) { if (get_arglen() == -1) { // set param to null value Param * param = sqlci_env->get_paramlist()->get(param_name); if (param) param->makeNull(); else { param = new Param(param_name, (char*)0); sqlci_env->get_paramlist()->append(param); param->makeNull(); } } else if (!get_argument()) { /* RESET PARAM command */ if (!param_name) { /* RESET all params */ Param * param = sqlci_env->get_paramlist()->getFirst(); while (param) { sqlci_env->get_paramlist()->remove(param->getName()); delete param; param = sqlci_env->get_paramlist()->getNext(); } } else { Param * param = sqlci_env->get_paramlist()->get(param_name); sqlci_env->get_paramlist()->remove(param_name); delete param; } } else { /* SET PARAM command */ Param * param = sqlci_env->get_paramlist()->get(param_name); if (param) { param->setValue(this); } else { param = new Param(param_name, this); sqlci_env->get_paramlist()->append(param); } } return 0; }