Exemplo n.º 1
0
        /// <summary>
        /// Return the DB2 specific statement for executing a stored procedure
        /// </summary>
        /// <param name="storedProcedure">Name of stored procedure.</param>
        /// <param name="dbParameters">DB2Parameter collection</param>
        /// <returns>An DB2 compliant statement for executing the given stored procedure and parameters.</returns>
        public override string GenerateStoredProcedureCall(string storedProcedure
                                                           , DbParameterCollection dbParameters)
        {
            DB2ParameterCollection db2Parameters = (DB2ParameterCollection)dbParameters;

            StringBuilder commandText = new StringBuilder();

            if (db2Parameters != null && db2Parameters.Count > 0)
            {
                commandText.AppendFormat("call {0}", storedProcedure);
                bool firstParam = true;
                foreach (DB2Parameter param in db2Parameters)
                {
                    if (param.Direction == ParameterDirection.ReturnValue)
                    {
                        commandText.Insert(0, BuildBindVariableName(param.ParameterName) + " = ");
                    }
                    commandText.AppendFormat("{0} {1}"
                                             , firstParam ? "(" : ", "
                                             , BuildBindVariableName(param.ParameterName));
                    firstParam = false;
                }
                if (!firstParam)
                {
                    commandText.Append(")");
                }
            }
            commandText.Append(";");
            return(commandText.ToString());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns a clone of the given DbParameter collection.
        /// </summary>
        /// <param name="dbParameters">The collection to clone</param>
        /// <returns>A copy of the DbParameter collection</returns>
        public override DbParameterCollection CloneParameterCollection(DbParameterCollection dbParameters)
        {
            DB2ParameterCollection srcDb2Parameters = (DB2ParameterCollection)dbParameters;
            DB2ParameterCollection tgtDb2Parameters = (DB2ParameterCollection)
                                                      _database.GetSqlStringCommand(Constants.NoOpDbCommandText).Parameters;

            foreach (DB2Parameter dbdParam in dbParameters)
            {
                CopyParameterToCollection(tgtDb2Parameters, dbdParam);
            }
            return(tgtDb2Parameters);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns a copy of the given DbParameter that was added to the given collection.
        /// </summary>
        /// <param name="dbParameters">A DbParameter collection to add the parameter clone to</param>
        /// <param name="dbParam">A DbParameter to clone</param>
        /// <returns>The DbParameter clone</returns>
        public override DbParameter CopyParameterToCollection(DbParameterCollection dbParameters
                                                              , DbParameter dbParam)
        {
            DB2ParameterCollection db2Parameters = (DB2ParameterCollection)dbParameters;
            DB2Parameter           db2Param      = (DB2Parameter)dbParam;

            if (db2Parameters.Contains(db2Param.ParameterName))
            {
                throw new ExceptionEvent(enumExceptionEventCodes.DbParameterExistsInCollection
                                         , string.Format("Parameter {0} already belongs to this collection; use Set to change value."
                                                         , db2Param.ParameterName));
            }
            db2Parameters.Add(CloneParameter(db2Param));
            return(db2Parameters[db2Param.ParameterName]);
        }