Exemplo n.º 1
0
        public new StoredProcedureResult Execute()
        {
            base.Execute();
            var rez = new StoredProcedureResult();
            rez.ReturnValue = _return.Value.ConvertTo<int>();
            foreach (var p in _output)
            {
                //first char of parameter name is db specific param naming
                rez.OutputValues[p.ParameterName.Substring(1)] = p.Value;
            }

            return rez;
        }
Exemplo n.º 2
0
        public new StoredProcedureResult Execute()
        {
            base.Execute();
            var rez = new StoredProcedureResult();

            rez.ReturnValue = _return.Value.ConvertTo <int>();
            foreach (var p in _output)
            {
                //first char of parameter name is db specific param naming
                rez.OutputValues[p.ParameterName.Substring(1)] = p.Value;
            }

            return(rez);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Executes sproc
        /// </summary>
        /// <param name="cnx"></param>
        /// <param name="sprocName"></param>
        /// <param name="arguments">Arguments as an anonymous object, output parameters names must be prefixed with _ </param>
        /// <example>
        /// ExecuteStoredProcedure("sprocName",new{Id=1,_OutValue=""})
        /// </example>
        /// <returns></returns>
        public static StoredProcedureResult ExecuteStoredProcedure(this DbConnection cnx, string sprocName,
                                                                   object arguments)
        {
            using (var cmd = cnx.CreateCommand())
            {
                var output = new List <IDbDataParameter>();
                sprocName.MustNotBeEmpty();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = sprocName;
                var provider  = cnx.GetProvider();
                var paramDict = PrepareStatement.CreateParamsDictionary(arguments);
                var allp      = cmd.Parameters;

                IDbDataParameter p = null;

                p = cmd.CreateParameter();
                provider.SetupParameter(p, "ReturnValue", 0);
                allp.Add(p);
                var returnParam = p;
                p.Direction = ParameterDirection.ReturnValue;

                foreach (var kv in paramDict)
                {
                    p = cmd.CreateParameter();
                    var pname = kv.Key;
                    if (kv.Key.StartsWith("_"))
                    {
                        pname       = kv.Key.Substring(1);
                        p.Direction = ParameterDirection.Output;
                    }
                    provider.SetupParameter(p, pname, kv.Value);
                    allp.Add(p);
                    output.Add(p);
                }

                cmd.Execute();
                var rez = new StoredProcedureResult();
                rez.ReturnValue = returnParam.Value.ConvertTo <int>();
                foreach (var param in output)
                {
                    //first char of parameter name is db specific param prefix
                    rez.OutputValues[param.ParameterName.Substring(1)] = param.Value;
                }

                return(rez);
            }
        }