コード例 #1
0
 private void GetWriteParameterProxy(IBindingParameterInfo paramInfo)
 {
     if (paramInfo.Parameter is OracleParameter op)
     {
         op.Direction    = ParameterDirection.ReturnValue;
         op.OracleDbType = OracleDbType.RefCursor;
     }
     else
     {
         throw new InvalidOperationException("Refcursors are only available for parameters of type OracleParameter.");
     }
 }
コード例 #2
0
ファイル: TvpHelper.cs プロジェクト: mephistoc/jerrycurl
        private static void GetParameterWriterProxy(string tvpName, string[] columnNames, MetadataIdentity[] heading, BindingParameterConverter[] converters, IBindingParameterInfo paramInfo)
        {
            SqlParameter sqlParam = paramInfo.Parameter as SqlParameter ?? throw new InvalidOperationException("Table-valued parameters are only supported on SqlParameter instances.");

            Relation relation = new Relation(paramInfo.Field, heading);

            ITuple refTuple = relation.Row();

            IEnumerable <SqlDataRecord> iterator()
            {
                SqlDataRecord record = GetDataRecord(columnNames, refTuple);

                foreach (ITuple tuple in relation)
                {
                    SetRecordValues(record, tuple, converters);

                    yield return(record);
                }
            }

            if (refTuple == null)
            {
                sqlParam.Value = Array.Empty <SqlDataRecord>();
            }
            else
            {
                sqlParam.Value = iterator();
            }

            sqlParam.SqlDbType = SqlDbType.Structured;
            sqlParam.TypeName  = tvpName;
        }