Exemple #1
0
        /// <summary>
        /// Create and add a StoredProcedure instance to this Database.
        /// <para>The name parameter must be a valid one-part or two-part T-SQL identifier.  Square brackets around the name parts are optional.</para>
        /// <para>E.g. "my_stored_proc", "[my_stored_proc]", "my_schema.my_stored_proc", and "[my_schema].[my_stored_proc]" are all valid name identifiers.</para>
        /// <para>Names with more than two parts, or missing parts, are considered errors.</para>
        /// </summary>
        public StoredProcedure AddStoredProcedure(String name, Int32 versionNumber, params SqlParameter[] sqlParameters)
        {
            name.Name("name").NotNullEmptyOrOnlyWhitespace();
              versionNumber.Name("versionNumber").GreaterThan(0);

              name = IdentifierHelper.GetStrippedSqlIdentifier(name);
              var nameParts = name.Split(".".ToCharArray(), StringSplitOptions.None);

              /* It's an error if any of the name parts are empty,
             and this method only accepts one-part ([object name]) or
             two-part ([schema name].[object name]) T-SQL identifiers. */
              if (nameParts.Any(s => s.IsEmpty()) || (nameParts.Length > 2))
            throw new ArgumentExceptionFmt(Properties.Resources.InvalidStoredProcedureName, name);

              /* At this point, all of the name parts have been validated for correct form. */

              if (nameParts.Length == 1)
              {
            return this.Schemas.GetDefaultSchema().AddStoredProcedure(name, versionNumber, sqlParameters);
              }
              else
              {
            var schemaName = nameParts[0];
            var schema = this.Schemas.GetByName(schemaName);
            if (schema == null)
              throw new ExceptionFmt(Properties.Resources.SchemaNameNotFound, schemaName);

            var storedProcedureName = nameParts[1];

            return schema.AddStoredProcedure(storedProcedureName, versionNumber, sqlParameters);
              }
        }
Exemple #2
0
        public StoredProcedure AddStoredProcedure(String name, Int32 versionNumber, params SqlParameter[] sqlParameters)
        {
            name.Name("name").NotNullEmptyOrOnlyWhitespace();
              versionNumber.Name("versionNumber").GreaterThan(0);

              name = IdentifierHelper.GetBracketedSqlIdentifier(name);

              if (name.Contains("."))
            throw new ArgumentExceptionFmt(Properties.Resources.InvalidStoredProcedureNameForSchema, name);

              if (this.StoredProcedures.GetByName(name, versionNumber) == null)
              {
            var sp = new StoredProcedure(this, name, versionNumber, sqlParameters);
            this.StoredProcedures.Add(sp);
            return sp;
              }
              else
              {
            throw new ExceptionFmt(Properties.Resources.StoredProcedureAlreadyExists, name, versionNumber);
              }
        }