示例#1
0
    def _buildADOparameterList(self, parameters, sproc=False):
        self.parameters = parameters
        if parameters is None:
            parameters = []

        parameters_known = False
        if sproc:  # needed only if we are calling a stored procedure
            try:  # attempt to use ADO's parameter list
                self.cmd.Parameters.Refresh()
                if verbose > 2:
                    print 'ADO detected Params=', format_parameters(
                        self.cmd.Parameters, True)
                    print 'Program Parameters=', repr(parameters)
                parameters_known = True
            except api.Error:
                if verbose:
                    print 'ADO Parameter Refresh failed'
                pass
            else:
                if len(parameters) != self.cmd.Parameters.Count - 1:
                    raise api.ProgrammingError('You must supply %d parameters for this stored procedure' % \
                                               (self.cmd.Parameters.Count - 1))
        if sproc or parameters != []:
            i = 0
            if parameters_known:  # use ado parameter list
                if self._parameter_names:  # named parameters
                    for i, pm_name in enumerate(self._parameter_names):
                        p = getIndexedValue(self.cmd.Parameters, i)
                        try:
                            _configure_parameter(p, parameters[pm_name],
                                                 p.Type, parameters_known)
                        except (Exception), e:
                            _message = u'Error Converting Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(parameters[pm_name]))
                            self._raiseCursorError(
                                api.DataError, _message + '->' + repr(e.args))
                else:  # regular sequence of parameters
                    for value in parameters:
                        p = getIndexedValue(self.cmd.Parameters, i)
                        if p.Direction == adc.adParamReturnValue:  # this is an extra parameter added by ADO
                            i += 1  # skip the extra
                            p = getIndexedValue(self.cmd.Parameters, i)
                        try:
                            _configure_parameter(p, value, p.Type,
                                                 parameters_known)
                        except (Exception), e:
                            _message = u'Error Converting Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(value))
                            self._raiseCursorError(
                                api.DataError, _message + '->' + repr(e.args))
                        i += 1
示例#2
0
    def _buildADOparameterList(self, parameters, sproc=False):
        self.parameters = parameters
        if parameters is None:
            parameters = []

        parameters_known = False
        if sproc:  # needed only if we are calling a stored procedure
            try: # attempt to use ADO's parameter list
                self.cmd.Parameters.Refresh()
                if verbose > 2:
                    print 'ADO detected Params=', format_parameters(self.cmd.Parameters, True)
                    print 'Program Parameters=', repr(parameters)
                parameters_known = True
            except api.Error:
                if verbose:
                    print 'ADO Parameter Refresh failed'
                pass
            else:
                if len(parameters) != self.cmd.Parameters.Count - 1:
                    raise api.ProgrammingError('You must supply %d parameters for this stored procedure' % \
                                               (self.cmd.Parameters.Count - 1))
        if sproc or parameters != []:
            i = 0
            if parameters_known:  # use ado parameter list
                if self._parameter_names:  # named parameters
                    for i, pm_name in enumerate(self._parameter_names):
                        p = getIndexedValue(self.cmd.Parameters, i)
                        try:
                            _configure_parameter(p, parameters[pm_name], p.Type, parameters_known)
                        except (Exception), e:
                            _message = u'Error Converting Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(parameters[pm_name]))
                            self._raiseCursorError(api.DataError, _message+'->'+repr(e.args))
                else:  # regular sequence of parameters
                    for value in parameters:
                        p = getIndexedValue(self.cmd.Parameters,i)
                        if p.Direction == adc.adParamReturnValue:  # this is an extra parameter added by ADO
                            i += 1   # skip the extra
                            p=getIndexedValue(self.cmd.Parameters,i)
                        try:
                            _configure_parameter(p, value, p.Type, parameters_known)
                        except (Exception), e:
                            _message = u'Error Converting Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(value))
                            self._raiseCursorError(api.DataError, _message+'->'+repr(e.args))
                        i += 1
示例#3
0
                                api.DataError, _message + '->' + repr(e.args))
                        i += 1
            else:  #-- build own parameter list
                if self._parameter_names:  # we expect a dictionary of parameters, this is the list of expected names
                    for parm_name in self._parameter_names:
                        elem = parameters[parm_name]
                        adotype = api.pyTypeToADOType(elem)
                        p = self.cmd.CreateParameter(parm_name, adotype,
                                                     adc.adParamInput)
                        _configure_parameter(p, elem, adotype,
                                             parameters_known)
                        try:
                            self.cmd.Parameters.Append(p)
                        except (Exception), e:
                            _message = u'Error Building Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(elem))
                            self._raiseCursorError(
                                api.DataError, _message + '->' + repr(e.args))
                else:  # expecting the usual sequence of parameters
                    if sproc:
                        p = self.cmd.CreateParameter('@RETURN_VALUE',
                                                     adc.adInteger,
                                                     adc.adParamReturnValue)
                        self.cmd.Parameters.Append(p)

                    for elem in parameters:
                        name = 'p%i' % i
                        adotype = api.pyTypeToADOType(elem)
                        p = self.cmd.CreateParameter(
                            name, adotype, adc.adParamInput
                        )  # Name, Type, Direction, Size, Value
示例#4
0
                            _message = u'Error Converting Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(value))
                            self._raiseCursorError(api.DataError, _message+'->'+repr(e.args))
                        i += 1
            else: #-- build own parameter list
                if self._parameter_names:  # we expect a dictionary of parameters, this is the list of expected names
                    for parm_name in self._parameter_names:
                        elem = parameters[parm_name]
                        adotype = api.pyTypeToADOType(elem)
                        p = self.cmd.CreateParameter(parm_name, adotype, adc.adParamInput)
                        _configure_parameter(p, elem, adotype, parameters_known)
                        try:
                            self.cmd.Parameters.Append(p)
                        except (Exception), e:
                            _message = u'Error Building Parameter %s: %s, %s <- %s\n' % \
                                           (p.Name, adc.ado_type_name(p.Type), p.Value, repr(elem))
                            self._raiseCursorError(api.DataError, _message+'->'+repr(e.args))
                else :  # expecting the usual sequence of parameters
                    if sproc:
                        p = self.cmd.CreateParameter('@RETURN_VALUE', adc.adInteger, adc.adParamReturnValue)
                        self.cmd.Parameters.Append(p)

                    for elem in parameters:
                        name='p%i' % i
                        adotype = api.pyTypeToADOType(elem)
                        p=self.cmd.CreateParameter(name, adotype, adc.adParamInput) # Name, Type, Direction, Size, Value
                        _configure_parameter(p, elem, adotype, parameters_known)
                        try:
                            self.cmd.Parameters.Append(p)
                        except (Exception), e:
                            _message = u'Error Building Parameter %s: %s, %s <- %s\n' % \