コード例 #1
0
ファイル: DB2zOSSchemaProvider.cs プロジェクト: ywscr/linq2db
        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());
        }
コード例 #2
0
        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();
コード例 #3
0
		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();
		}