/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.atom.compiler.token; import java.util.Map; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.engin.constant.ITokenConstant; import com.hundsun.ares.studio.engin.token.ICodeToken; import com.hundsun.ares.studio.engin.token.macro.IMacroToken; /** * @author liaogc * */ public class PROCGetRecordEndToken implements ICodeToken{ public static final String NL = ITokenConstant.NL; private IMacroToken macroToken;//PROCGetRecordEnd�� private String cursorName ;//�α����� public PROCGetRecordEndToken(IMacroToken token,String cursorName){ this.macroToken = token; this.cursorName = cursorName; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#getContent() */ @Override public String getContent() { return StringUtils.EMPTY; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#getType() */ @Override public int getType() { return ICodeToken.CODE_TEXT; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#genCode(java.util.Map) */ @Override public String genCode(Map<Object, Object> context) throws Exception { StringBuffer code = new StringBuffer(100); String cursorVars =getVarString(); code.append("EXEC SQL FETCH ").append(cursorName).append(" INTO ").append(cursorVars).append(";").append(NL); code.append("if ((SQLCODE != OK_SUCCESS) && (SQLCODE != 100) && (SQLCODE != 1403))").append(NL); code.append("{").append(NL); code.append("iReturnCode = SQLCODE;").append(NL); code.append("@error_no = SQLCODE;").append(NL); code.append(NL); code.append("hs_strcpy(@error_info, sqlca.sqlerrm.sqlerrmc);").append(NL); code.append("@error_id = 0;").append(NL); code.append("}").append(NL); code.append("}while (SQLCODE == OK_SUCCESS);").append(NL); code.append("}").append(NL); code.append("else if ((SQLCODE != 100) && (SQLCODE != 1403))").append(NL); code.append("{").append(NL); code.append("iReturnCode = SQLCODE;").append(NL); code.append("@error_no = SQLCODE;").append(NL); code.append("hs_strcpy(@error_info, sqlca.sqlerrm.sqlerrmc);").append(NL); code.append("@error_id = 0;").append(NL); code.append("}").append(NL); code.append("EXEC SQL CLOSE ").append(cursorName).append(";").append(NL); code.append("if ( (iReturnCode != 0) || (SQLCODE != OK_SUCCESS) )").append(NL); code.append("goto svr_end;").append(NL); return code.toString(); } /** * ��ú��ı��� * @return */ private String getVarString(){ return this.macroToken.getParameters()[0]; } }