📄 sqlrelaycmd.c
字号:
Tcl_WrongNumArgs(interp,3, objv, "query length"); return TCL_ERROR; } Tcl_GetIntFromObj(interp, objv[3], &length); if (!(result = cur->sendQuery(Tcl_GetString(objv[2]),length))) { Tcl_AppendResult(interp,cur->errorMessage(),(char *)NULL); return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewBooleanObj(result)); break; } case SQLRCUR_sendFileQuery: { int result = 0; if (objc != 4) { Tcl_WrongNumArgs(interp,2, objv, "path filename"); return TCL_ERROR; } if (!(result = cur->sendFileQuery(Tcl_GetString(objv[2]), Tcl_GetString(objv[3])))) { Tcl_AppendResult(interp,cur->errorMessage(),(char *)NULL); return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewBooleanObj(result)); break; } case SQLRCUR_prepareQuery: { if (objc != 3) { Tcl_WrongNumArgs(interp,2, objv, "query"); return TCL_ERROR; } cur->prepareQuery(Tcl_GetString(objv[2])); break; } case SQLRCUR_prepareQueryWithLength: { int length = 0; if (objc != 4) { Tcl_WrongNumArgs(interp,3, objv, "query length"); return TCL_ERROR; } Tcl_GetIntFromObj(interp, objv[3], &length); cur->prepareQuery(Tcl_GetString(objv[2]),length); break; } case SQLRCUR_prepareFileQuery: { if (objc != 4) { Tcl_WrongNumArgs(interp,2, objv, "path filename"); return TCL_ERROR; } cur->prepareFileQuery(Tcl_GetString(objv[2]), Tcl_GetString(objv[3])); break; } case SQLRCUR_substitution: { if (objc == 6) { double value; int precision, scale; if (Tcl_GetDoubleFromObj(interp, objv[3], &value) != TCL_OK || Tcl_GetIntFromObj(interp, objv[4], &precision) != TCL_OK || Tcl_GetIntFromObj(interp, objv[5], &scale) != TCL_OK) { return TCL_ERROR; } cur->substitution(Tcl_GetString(objv[2]), value, precision, scale); } else if (objc == 4) { long value; if (Tcl_GetLongFromObj(interp, objv[3], &value) == TCL_OK || Tcl_GetIntFromObj(interp, objv[3], (int *)&value) == TCL_OK) { cur->substitution(Tcl_GetString(objv[2]), value); } else { cur->substitution(Tcl_GetString(objv[2]), Tcl_GetString(objv[3])); } } else { Tcl_WrongNumArgs(interp, 2, objv, "variable value ?precision scale?"); return TCL_ERROR; } break; } case SQLRCUR_clearBinds: { if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } cur->clearBinds(); break; } case SQLRCUR_countBindVariables: { long count; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } count=cur->countBindVariables(); Tcl_SetObjResult(interp, Tcl_NewLongObj(count)); break; } case SQLRCUR_inputBind: { if (objc == 6) { double value; int precision, scale; if (Tcl_GetDoubleFromObj(interp, objv[3], &value) != TCL_OK || Tcl_GetIntFromObj(interp, objv[4], &precision) != TCL_OK || Tcl_GetIntFromObj(interp, objv[5], &scale) != TCL_OK) { return TCL_ERROR; } cur->inputBind(Tcl_GetString(objv[2]), value, (uint32_t)precision, (uint32_t)scale); } else if (objc == 4) { long value; if (Tcl_GetLongFromObj(interp, objv[3], &value) == TCL_OK || Tcl_GetIntFromObj(interp, objv[3], (int *)&value) == TCL_OK) { /* value is long object */ cur->inputBind(Tcl_GetString(objv[2]), value); } else { /* value is not long object, so it might be string one */ cur->inputBind(Tcl_GetString(objv[2]), Tcl_GetString(objv[3])); } } else { Tcl_WrongNumArgs(interp, 2, objv, "variable value ?precision scale?"); return TCL_ERROR; } break; } case SQLRCUR_inputBindBlob: { long size; if (objc != 5) { Tcl_WrongNumArgs(interp,2, objv, "variable value size"); return TCL_ERROR; } if (Tcl_GetLongFromObj(interp, objv[4], &size) != TCL_OK) { return TCL_ERROR; } cur->inputBindBlob(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), (uint32_t)size); break; } case SQLRCUR_inputBindClob: { long size; if (objc != 5) { Tcl_WrongNumArgs(interp,2, objv, "variable value size"); return TCL_ERROR; } if (Tcl_GetLongFromObj(interp, objv[4], &size) != TCL_OK) { return TCL_ERROR; } cur->inputBindClob(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), (uint32_t)size); break; } case SQLRCUR_defineOutputBindString: { long length; if (objc != 4) { Tcl_WrongNumArgs(interp,2, objv, "variable length"); return TCL_ERROR; } if (Tcl_GetLongFromObj(interp, objv[3], &length) != TCL_OK) { return TCL_ERROR; } cur->defineOutputBindString(Tcl_GetString(objv[2]), length); break; } case SQLRCUR_defineOutputBindInteger: { if (objc != 3) { Tcl_WrongNumArgs(interp,1, objv, "variable"); return TCL_ERROR; } cur->defineOutputBindInteger(Tcl_GetString(objv[2])); break; } case SQLRCUR_defineOutputBindDouble: { if (objc != 3) { Tcl_WrongNumArgs(interp,1, objv, "variable"); return TCL_ERROR; } cur->defineOutputBindDouble(Tcl_GetString(objv[2])); break; } case SQLRCUR_defineOutputBindBlob: { if (objc != 3) { Tcl_WrongNumArgs(interp,2, objv, "variable"); return TCL_ERROR; } cur->defineOutputBindBlob(Tcl_GetString(objv[2])); break; } case SQLRCUR_defineOutputBindClob: { if (objc != 3) { Tcl_WrongNumArgs(interp,2, objv, "variable"); return TCL_ERROR; } cur->defineOutputBindClob(Tcl_GetString(objv[2])); break; } case SQLRCUR_defineOutputBindCursor: { if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } cur->defineOutputBindCursor(Tcl_GetString(objv[2])); break; } case SQLRCUR_substitutions: { int num = 0, len = 0, i = 0; Tcl_Obj **argList, *variableObj, *valueObj, *precisionObj, *scaleObj; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "{{variable value ?precision scale?}...}"); return TCL_ERROR; } if (Tcl_ListObjGetElements(interp, objv[2], &num, &argList) != TCL_OK) { return TCL_ERROR; } for (i = 0; i < num; i++) { if (Tcl_ListObjLength(interp, argList[i], &len) != TCL_OK) { return TCL_ERROR; } else if (len == 4) { double value; int precision, scale; if (Tcl_ListObjIndex(interp, argList[i], 0, &variableObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 1, &valueObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 2, &precisionObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 3, &scaleObj) != TCL_OK || Tcl_GetDoubleFromObj(interp, valueObj, &value) != TCL_OK || Tcl_GetIntFromObj(interp, precisionObj, &precision) != TCL_OK || Tcl_GetIntFromObj(interp, scaleObj, &scale) != TCL_OK) { return TCL_ERROR; } cur->substitution(Tcl_GetString(variableObj), value, precision, scale); } else if (len == 2) { long value; if (Tcl_ListObjIndex(interp, argList[i], 0, &variableObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 1, &valueObj) != TCL_OK) { return TCL_ERROR; } if ( Tcl_GetLongFromObj(interp, valueObj, &value) == TCL_OK || Tcl_GetIntFromObj(interp, valueObj, (int *)&value) == TCL_OK ) { cur->substitution(Tcl_GetString(variableObj), value); } else { cur->substitution(Tcl_GetString(variableObj), Tcl_GetString(valueObj)); } } else { Tcl_WrongNumArgs(interp, 2, objv, "{{variable value ?precision scale?} ...}"); return TCL_ERROR; } } break; } case SQLRCUR_inputBinds: { int num = 0, len = 0, i = 0; Tcl_Obj **argList, *variableObj, *valueObj, *precisionObj, *scaleObj; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "{{variable value ?precision scale?}...}"); return TCL_ERROR; } if (Tcl_ListObjGetElements(interp, objv[2], &num, &argList) != TCL_OK) { return TCL_ERROR; } for (i = 0; i < num; i++) { if (Tcl_ListObjLength(interp, argList[i], &len) != TCL_OK) { return TCL_ERROR; } else if (len == 4) { double value; int precision, scale; if (Tcl_ListObjIndex(interp, argList[i], 0, &variableObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 1, &valueObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 2, &precisionObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 3, &scaleObj) != TCL_OK || Tcl_GetDoubleFromObj(interp, valueObj, &value) != TCL_OK || Tcl_GetIntFromObj(interp, precisionObj, &precision) != TCL_OK || Tcl_GetIntFromObj(interp, scaleObj, &scale) != TCL_OK) { return TCL_ERROR; } cur->inputBind(Tcl_GetString(variableObj), value, precision, scale); } else if (len == 2) { long value; if (Tcl_ListObjIndex(interp, argList[i], 0, &variableObj) != TCL_OK || Tcl_ListObjIndex(interp, argList[i], 1, &valueObj) != TCL_OK) { return TCL_ERROR; } if ( Tcl_GetLongFromObj(interp, valueObj, &value) == TCL_OK || Tcl_GetIntFromObj(interp, valueObj, (int *)&value) == TCL_OK ) { cur->inputBind(Tcl_GetString(variableObj), value); } else { cur->inputBind(Tcl_GetString(variableObj), Tcl_GetString(valueObj)); } } else { Tcl_WrongNumArgs(interp, 2, objv, "{{variable value ?precision scale?} ...}"); return TCL_ERROR; } } break; } case SQLRCUR_validateBinds: { if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } cur->validateBinds(); break; } case SQLRCUR_validBind: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewBooleanObj(cur->validBind(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_executeQuery: { int result = 0; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } if (!(result = cur->executeQuery())) { Tcl_AppendResult(interp,cur->errorMessage(),(char *)NULL); return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewBooleanObj(result)); break; } case SQLRCUR_fetchFromBindCursor: { int result = 0; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } if (!(result = cur->fetchFromBindCursor())) { Tcl_AppendResult(interp,cur->errorMessage(),(char *)NULL); return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewBooleanObj(result)); break; } case SQLRCUR_getOutputBindString: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewStringObj(cur->getOutputBindString(Tcl_GetString(objv[2])), cur->getOutputBindLength(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindBlob: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewStringObj(cur->getOutputBindBlob(Tcl_GetString(objv[2])), cur->getOutputBindLength(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindClob: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewStringObj(cur->getOutputBindClob(Tcl_GetString(objv[2])), cur->getOutputBindLength(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindInteger: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewLongObj(cur->getOutputBindInteger(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindDouble: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewDoubleObj(cur->getOutputBindDouble(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindLength: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewLongObj(cur->getOutputBindLength(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_getOutputBindCursor: { Tcl_Obj *id; sqlrcursor *newcur = (sqlrcursor *)NULL; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } newcur = cur->getOutputBindCursor(Tcl_GetString(objv[2])); newcur->copyReferences(); if (newcur != (sqlrcursor *)NULL) { id = getCursorID(); Tcl_CreateObjCommand(interp, Tcl_GetString(id), sqlrcurObjCmd, (ClientData)newcur, (Tcl_CmdDeleteProc *)sqlrcurDelete); Tcl_SetObjResult(interp, id); } else { return TCL_ERROR; } break; } case SQLRCUR_openCachedResultSet: { Tcl_Obj *result; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "variable"); return TCL_ERROR; } result = Tcl_NewBooleanObj(cur->openCachedResultSet(Tcl_GetString(objv[2]))); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_colCount: { Tcl_Obj *result; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } result = Tcl_NewIntObj(cur->colCount()); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_rowCount: { Tcl_Obj *result; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } result = Tcl_NewIntObj(cur->rowCount()); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_totalRows: { Tcl_Obj *result; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } result = Tcl_NewIntObj(cur->totalRows()); Tcl_SetObjResult(interp, result); break; } case SQLRCUR_affectedRows: { Tcl_Obj *result; if (objc > 2) { Tcl_WrongNumArgs(interp, 2, objv, NULL); return TCL_ERROR; } result = Tcl_NewIntObj(cur->affectedRows());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -