Exemplo n.º 1
0
        /// <summary>
        /// Gets the meta data DataTable for the routine results schema
        /// </summary>
        /// <param name="con"></param>
        /// <param name="routine"></param>
        /// <returns></returns>
        protected override DataTable GetSprocResultSchema(DbConnection con, DBSchemaRoutine routine)
        {
            //some access queries support the analysis, others don't????

            string fullname = "SELECT * FROM " + GetFullName(routine.GetReference());


            using (DbCommand cmd = this.Database.CreateCommand(con, fullname))
            {
                cmd.CommandType = CommandType.Text;
                if (routine.Parameters.Count > 0)
                {
                    foreach (DBSchemaParameter sp in routine.Parameters)
                    {
                        DbParameter param = this.Database.AddCommandParameter(cmd, sp.InvariantName, sp.DbType);
                        param.Value     = DBNull.Value;
                        param.Direction = sp.Direction;
                    }
                }

                using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
                {
                    DataTable dt = reader.GetSchemaTable();
                    if (null != dt)
                    {
                        WriteCollectionData("Procedures", new string[] { routine.Name }, dt);
                    }

                    return(dt);
                }
            }
        }
Exemplo n.º 2
0
        protected override void FillRoutineParams(DBSchemaRoutine aroutine, DataTable dtSprocParams)
        {
            DataColumn pos                = GetColumn(dtSprocParams, "POSITION", true);
            DataColumn direction          = GetColumn(dtSprocParams, "IN_OUT", true);
            DataColumn isResult           = GetColumn(dtSprocParams, "IS_RESULT", false);
            DataColumn name               = GetColumn(dtSprocParams, "ARGUMENT_NAME", true);
            DataColumn type               = GetColumn(dtSprocParams, "DATA_TYPE", true);
            DataColumn strSize            = GetColumn(dtSprocParams, "CHARACTER_LENGTH", false);
            DataColumn CharacterSetColumn = GetColumn(dtSprocParams, "CHARACTER_SET_NAME", false);

            foreach (DataRow row in dtSprocParams.Rows)
            {
                DBSchemaParameter param = new DBSchemaParameter();
                param.NativeName     = GetColumnStringValue(row, name);
                param.InvariantName  = GetInvariantParameterName(param.NativeName);
                param.ParameterIndex = GetColumnIntValue(row, pos, -1);
                string dirvalue = GetColumnStringValue(row, direction);
                param.Direction = GetParameterDirectionFromSchemaValue(dirvalue);
                if (GetColumnBoolValue(row, isResult))
                {
                    param.Direction = ParameterDirection.ReturnValue;
                }
                param.NativeType    = GetColumnStringValue(row, type);
                param.DbType        = GetDbTypeForNativeType(param.NativeType, GetColumnStringValue(row, CharacterSetColumn));
                param.RuntimeType   = GetSystemTypeForNativeType(GetColumnStringValue(row, type));
                param.ParameterSize = GetColumnIntValue(row, strSize, -1);

                aroutine.Parameters.Add(param);
            }
        }
Exemplo n.º 3
0
        protected override void FillRoutineData(DBSchemaRoutine aroutine, DataRow dataRow)
        {
            DataColumn catalog = GetColumn(dataRow.Table, "CATALOG", false);
            DataColumn schema  = GetColumn(dataRow.Table, "OWNER", false);
            DataColumn name    = GetColumn(dataRow.Table, "OBJECT_NAME", true);

            aroutine.Name    = GetColumnStringValue(dataRow, name);
            aroutine.Schema  = GetColumnStringValue(dataRow, schema);
            aroutine.Catalog = GetColumnStringValue(dataRow, catalog);
        }
        private void GenerateRoutineParameters(DBSchemaRoutine schemaRoutine, bool annotateDirection)
        {
            if (schemaRoutine.Parameters != null && schemaRoutine.Parameters.Count > 0)
            {
                List <DBSchemaParameter> param = this.SortColumnsByOrdinal(schemaRoutine.Parameters);
                this.BeginBlock();


                for (int i = 0; i < param.Count; i++)
                {
                    this.BeginNewLine();
                    DBSchemaParameter p = param[i];

                    if (annotateDirection)
                    {
                        switch (p.Direction)
                        {
                        case System.Data.ParameterDirection.Input:
                            this.WriteRawSQLString("IN ");
                            break;

                        case System.Data.ParameterDirection.InputOutput:
                            this.WriteRawSQLString("INOUT ");
                            break;

                        case System.Data.ParameterDirection.Output:
                            this.WriteRawSQLString("OUT ");
                            break;

                        case System.Data.ParameterDirection.ReturnValue:
                            //Skip the return parameters
                            continue;

                        default:
                            throw new ArgumentOutOfRangeException("DBSchemaParameter.Direction");
                        }
                    }
                    this.WriteNativeParameterReference(p.InvariantName);
                    this.WriteSpace();
                    string options;
                    string type = this.GetNativeTypeForDbType(p.DbType, p.ParameterSize, -1, DBColumnFlags.Nullable, out options);
                    this.WriteRawSQLString(type);
                    if (string.IsNullOrEmpty(options) == false)
                    {
                        this.WriteRawSQLString(options);
                    }
                    if (i < param.Count - 1)
                    {
                        this.WriteReferenceSeparator();
                    }
                }
                this.EndBlock();
            }
            this.BeginNewLine();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Populates a routine from the meta data DataTable
        /// </summary>
        /// <param name="aroutine"></param>
        /// <param name="dataRow"></param>
        protected override void FillRoutineData(DBSchemaRoutine aroutine, DataRow dataRow)
        {
            //base.FillRoutineData(aroutine, dataRow);
            DataTable  dt         = dataRow.Table;
            DataColumn catalog    = GetColumn(dt, "PROCEDURE_CATALOG", false);
            DataColumn schema     = GetColumn(dt, "PROCEDURE_SCHEMA", false);
            DataColumn name       = GetColumn(dt, "PROCEDURE_NAME", true);
            DataColumn definition = GetColumn(dt, "PROCEDURE_DEFINITION", false);

            aroutine.Catalog = GetColumnStringValue(dataRow, catalog);
            aroutine.Schema  = GetColumnStringValue(dataRow, schema);
            aroutine.Name    = GetColumnStringValue(dataRow, name);
        }
Exemplo n.º 6
0
        protected override DataTable GetSprocResultSchema(DbConnection con, DBSchemaRoutine routine)
        {
            //Doesn't support the CommandBehaviour of SchemaOnly
            return(null);

            string fullname = GetFullName(routine.GetReference());

            Query.DBExecQuery exec = Query.DBQuery.Exec(routine.Schema, routine.Name);
            foreach (DBSchemaParameter p in routine.Parameters)
            {
                Query.DBParam qp = Query.DBParam.Param(p.InvariantName, p.DbType, p.Direction);
                exec.WithParam(qp);
            }

            using (DbCommand cmd = this.Database.CreateCommand(con, exec))
            {
                using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
                {
                    DataTable dt = reader.GetSchemaTable();
                    return(dt);
                }
            }
        }
Exemplo n.º 7
0
 protected override DataTable GetSprocResultSchema(DbConnection con, DBSchemaRoutine routine)
 {
     return(null); //Doesn't support the SchemaOnly option on the command
 }
Exemplo n.º 8
0
 /// <summary>
 /// Ignored
 /// </summary>
 /// <param name="aroutine"></param>
 /// <param name="dtSprocParams"></param>
 protected override void FillRoutineParams(DBSchemaRoutine aroutine, DataTable dtSprocParams)
 {
     //Do Nothing as parameter inspeciton is not supported
 }