public DataTable GetProcedureParameters(string database, string procedure)
        {
            DataTable metaData = context.CreateParametersDataTable();

            this.ParseProcedureForParameters(metaData, procedure);
            metaData.AcceptChanges();
            return(metaData);
        }
Exemple #2
0
        private DataTable Mapper(IDataReader reader)
        {
            DataTable metaData = _context.CreateParametersDataTable();

            while (reader.Read())
            {
                DataRow row = metaData.NewRow();

                //metaData.Columns.Add("PROCEDURE_CATALOG", Type.GetType("System.String"));
                //metaData.Columns.Add("PROCEDURE_SCHEMA", Type.GetType("System.String"));
                //metaData.Columns.Add("PROCEDURE_NAME", Type.GetType("System.String"));
                //metaData.Columns.Add("PARAMETER_NAME", Type.GetType("System.String"));
                //metaData.Columns.Add("ORDINAL_POSITION", Type.GetType("System.Int32"));
                //metaData.Columns.Add("PARAMETER_TYPE", Type.GetType("System.Int32"));
                //metaData.Columns.Add("PARAMETER_HASDEFAULT", Type.GetType("System.Boolean"));
                //metaData.Columns.Add("PARAMETER_DEFAULT", Type.GetType("System.String"));
                //metaData.Columns.Add("IS_NULLABLE", Type.GetType("System.Boolean"));
                //metaData.Columns.Add("DATA_TYPE", Type.GetType("System.Int32"));
                //metaData.Columns.Add("CHARACTER_MAXIMUM_LENGTH", Type.GetType("System.Int64"));
                //metaData.Columns.Add("CHARACTER_OCTET_LENGTH", Type.GetType("System.Int64"));
                //metaData.Columns.Add("NUMERIC_PRECISION", Type.GetType("System.Int32"));
                //metaData.Columns.Add("NUMERIC_SCALE", Type.GetType("System.Int16"));
                //metaData.Columns.Add("DESCRIPTION", Type.GetType("System.String"));
                //metaData.Columns.Add("TYPE_NAME", Type.GetType("System.String"));
                //metaData.Columns.Add("LOCAL_TYPE_NAME", Type.GetType("System.String"));

                row["PROCEDURE_CATALOG"]    = _database;
                row["PROCEDURE_SCHEMA"]     = reader.GetString(0).Trim();
                row["PROCEDURE_NAME"]       = reader.GetString(1).Trim();
                row["PARAMETER_NAME"]       = reader.GetString(2).Trim();
                row["ORDINAL_POSITION"]     = reader.GetInt32(3);
                row["PARAMETER_HASDEFAULT"] = (reader.GetString(8) == "Y");

                if (!reader.IsDBNull(9))
                {
                    row["PARAMETER_DEFAULT"] = reader.GetString(9).Trim();
                }

                row["IS_NULLABLE"] = (reader.GetString(7) == "Y");
                row["CHARACTER_MAXIMUM_LENGTH"] = reader.GetInt32(5);
                row["NUMERIC_SCALE"]            = reader.GetInt32(6);
                row["TYPE_NAME"]       = reader.GetString(4).Trim();
                row["LOCAL_TYPE_NAME"] = reader.GetString(4).Trim();

                metaData.Rows.Add(row);
            }

            metaData.AcceptChanges();

            return(metaData);
        }
Exemple #3
0
        DataTable IMyMetaPlugin.GetProcedureParameters(string databaseName, string procedureName)
        {
            TraceContext("GetProcedureParameters: proc=" + procedureName);
            DataTable metaData = new DataTable();

            try
            {
                metaData = context.CreateParametersDataTable();

                CreateColumns(procedureName, metaData, "_IN"); // *_IN* = PROC_INPUT or PROC_IN_OUT
                // PROC_OUTPUT, PROC_IN_OUT, PROC_RETURN
            }
            finally
            {
            }

            metaData.TableName = "GetProcedureParameters";
            TraceTable("GetProcedureParameters-" + databaseName, metaData);
            return(metaData);
        }
Exemple #4
0
        public DataTable GetProcedureParameters(string database, string procedure)
        {
            DataTable metaData = new DataTable();

            try
            {
                metaData = context.CreateParametersDataTable();

                EfzConnection conn = InternalConnection;

                EfzCommand cmd = new EfzCommand();
                cmd.CommandText =
                    @"SELECT * 
FROM INFORMATION_SCHEMA.SYSTEM_PROCEDURECOLUMNS
WHERE PROCEDURE_NAME='" + procedure + "' and PROCEDURE_CAT='" + database + "'";
                cmd.Connection = conn;

                using (EfzDataReader r = cmd.ExecuteReader())
                {
                    while (r.Read())
                    {
                        DataRow row = metaData.NewRow();
                        metaData.Rows.Add(row);

                        if (r["IS_NULLABLE"] != DBNull.Value)
                        {
                            row["IS_NULLABLE"] = r["NULLABLE"];
                        }

                        int    type         = Convert.ToInt32(r["DATA_TYPE"]); // dbType enum code
                        string typeName     = (string)r["TYPE_NAME"];          // dbType enum code
                        int    charMax      = 0;
                        int    charOctetMax = 0;
                        int    precision    = 0;
                        int    scale        = 0;

                        if (r["CHAR_OCTET_LENGTH"] != DBNull.Value)
                        {
                            charOctetMax = Convert.ToInt32(r["CHAR_OCTET_LENGTH"]);
                        }

                        if (r["LENGTH"] != DBNull.Value)
                        {
                            charMax = Convert.ToInt32(r["LENGTH"]);
                        }

                        if (r["PRECISION"] != DBNull.Value)
                        {
                            precision = Convert.ToInt32(r["PRECISION"]);
                        }

                        if (r["SCALE"] != DBNull.Value)
                        {
                            scale = Convert.ToInt32(r["SCALE"]);
                        }

                        row["DATA_TYPE"] = type;
                        row["TYPE_NAME"] = typeName;
                        //row["TYPE_NAME_COMPLETE"] = this.GetDataTypeNameComplete(typeName, charMax, precision, scale);

                        row["CHARACTER_MAXIMUM_LENGTH"] = charMax;
                        row["CHARACTER_OCTET_LENGTH"]   = charOctetMax;
                        row["NUMERIC_PRECISION"]        = precision;
                        row["NUMERIC_SCALE"]            = scale;


                        row["PROCEDURE_CATALOG"]    = r["PROCEDURE_CAT"];
                        row["PROCEDURE_SCHEMA"]     = r["PROCEDURE_SCHEM"];
                        row["PROCEDURE_NAME"]       = r["PROCEDURE_NAME"];
                        row["PARAMETER_NAME"]       = r["COLUMN_NAME"];
                        row["ORDINAL_POSITION"]     = r["ORDINAL_POSITION"];
                        row["PARAMETER_TYPE"]       = r["COLUMN_TYPE"];
                        row["PARAMETER_HASDEFAULT"] = r["COLUMN_DEF"] != DBNull.Value && r["COLUMN_DEF"] != string.Empty;
                        row["PARAMETER_DEFAULT"]    = r["COLUMN_DEF"];
                        //row["IS_NULLABLE"] = r["NULLABLE"];
                        //row["DATA_TYPE"] = r["DATA_TYPE"];
                        //row["CHARACTER_MAXIMUM_LENGTH"] = r["LENGTH"];
                        //row["CHARACTER_OCTET_LENGTH"] = r["CHAR_OCTET_LENGTH"];
                        row["NUMERIC_PRECISION"] = r["PRECISION"];
                        row["NUMERIC_SCALE"]     = r["SCALE"];
                        row["DESCRIPTION"]       = r["REMARKS"];
                        //row["TYPE_NAME"] = r["TYPE_NAME"];
                        //row["LOCAL_TYPE_NAME"] = r[""];
                    }
                }
            }
            finally { }

            return(metaData);
        }
Exemple #5
0
 public System.Data.DataTable GetProcedureParameters(string database, string procedure)
 {
     return(_context.CreateParametersDataTable());
 }