protected override List <ProcedureParameterInfo> GetProcedureParameters(DataConnection dataConnection) { return(dataConnection .Query(rd => { var schema = rd.ToString(0); var procname = rd.ToString(1); var length = ConvertTo <long?> .From(rd["LENGTH"]); var scale = ConvertTo <int?> .From(rd["SCALE"]); var mode = ConvertTo <string> .From(rd[4]); var ppi = new ProcedureParameterInfo { ProcedureID = dataConnection.Connection.Database + "." + schema + "." + procname, ParameterName = rd.ToString(2), DataType = rd.ToString(3), Ordinal = ConvertTo <int> .From(rd["ORDINAL"]), IsIn = mode.Contains("IN"), IsOut = mode.Contains("OUT"), IsResult = false, IsNullable = true }; var ci = new ColumnInfo { DataType = ppi.DataType }; SetColumnParameters(ci, length, scale); ppi.Length = ci.Length; ppi.Precision = ci.Precision; ppi.Scale = ci.Scale; return ppi; }, @" SELECT SCHEMA, NAME, PARMNAME, TYPENAME, CASE ROWTYPE WHEN 'P' THEN 'IN' WHEN 'O' THEN 'OUT' WHEN 'B' THEN 'INOUT' WHEN 'S' THEN 'IN' END, ORDINAL, LENGTH, SCALE FROM SYSIBM.SYSPARMS WHERE " + GetSchemaFilter("SCHEMA")) .ToList()); }
protected override List <ProcedureParameterInfo> GetProcedureParameters(DataConnection dataConnection, IEnumerable <ProcedureInfo> procedures, GetSchemaOptions options) => dataConnection.Query(rd => { var schema = rd.GetStringTrim(0); var procname = rd.GetStringTrim(1); var length = ConvertTo <long?> .From(rd["LENGTH"]); var scale = ConvertTo <int?> .From(rd["SCALE"]); var mode = ConvertTo <string> .From(rd[4]); var ppi = new ProcedureParameterInfo { ProcedureID = dataConnection.Connection.Database + "." + schema + "." + procname, ParameterName = rd.GetStringTrim(2), DataType = rd.GetStringTrim(3), Ordinal = ConvertTo <int> .From(rd["ORDINAL"]), IsIn = mode.Contains("IN"), IsOut = mode.Contains("OUT"), IsResult = false }; var ci = new ColumnInfo { DataType = ppi.DataType }; SetColumnParameters(ci, length, scale); ppi.Length = ci.Length; ppi.Precision = ci.Precision; ppi.Scale = ci.Scale; return(ppi); }, @" SELECT PROCSCHEMA, PROCNAME, PARMNAME, TYPENAME, PARM_MODE, ORDINAL, LENGTH, SCALE FROM SYSCAT.PROCPARMS WHERE " + GetSchemaFilter("PROCSCHEMA")) .ToList();
protected override List<ProcedureParameterInfo> GetProcedureParameters(DataConnection dataConnection) { return dataConnection .Query(rd => { var schema = rd.ToString(0); var procname = rd.ToString(1); var length = ConvertTo<long?>.From(rd["LENGTH"]); var scale = ConvertTo<int?>. From(rd["SCALE"]); var mode = ConvertTo<string>.From(rd[4]); var ppi = new ProcedureParameterInfo { ProcedureID = dataConnection.Connection.Database + "." + schema + "." + procname, ParameterName = rd.ToString(2), DataType = rd.ToString(3), Ordinal = ConvertTo<int>.From(rd["ORDINAL"]), IsIn = mode.Contains("IN"), IsOut = mode.Contains("OUT"), IsResult = false }; var ci = new ColumnInfo { DataType = ppi.DataType }; SetColumnParameters(ci, length, scale); ppi.Length = ci.Length; ppi.Precision = ci.Precision; ppi.Scale = ci.Scale; return ppi; },@" SELECT PROCSCHEMA, PROCNAME, PARMNAME, TYPENAME, PARM_MODE, ORDINAL, LENGTH, SCALE FROM SYSCAT.PROCPARMS WHERE " + GetSchemaFilter("PROCSCHEMA")) .ToList(); }