/// <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()); }
/// <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); }
/// <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]); }