带输出參数的存储过程的定义,以及在aso.net中调用
ALTER proc [dbo].[mp_w_RechargePortalPayPal_All]
(
@PayPalOrderNo nvarchar(50), --订单号
@nAccountIDFrom int, --充值帐号
@nAccountIDTo int, --充入帐号
@cTotalMoney numeric(18,2), --总价 用户所在货币总价
@nMoneyType int, --货币类型 用户所在货币类型 -- 非system货币
@nToGameID int, --充入游戏
@nToGameAreaID int, --充入游戏区域
@nToGameServerID int, --冲入游戏server
@GameRoleName nvarchar(50) ,
--冲入游戏角色名
@nVMoney int, --平台币(总)
@nGamePoint int, --游戏币(总)
@AccountIP nvarchar(50), --充值IP
@AccountName nvarchar(150), --姓名
@AccountEmail nvarchar(150), --邮件
@AccountTel nvarchar(50), --电话
@PayType int, --支付方式
@BuyType int, --购买方式
@rv int out, -- >0成功 -1帐号不存在 -2帐号被封或冻结
@rOrderNo nvarchar(50) out,
@rBalanceMoney numeric(18,2) out
)
as
declare @rate decimal(18,6) --汇率
declare @LocalMoneyType int --系统的当地货币类型
declare @orderID int --订单ID
declare @LocalMoneyPrice numeric(18,2) --系统的当地货币
declare @sAccountFrom nvarchar(150) --充值帐户
declare @sAccountTo nvarchar(150) --充入帐户
declare @orderNO nvarchar(50) --订单号
declare @SKUID nvarchar(58) --SKUID
set @rOrderNo='';
set @rBalanceMoney=0;
--推断帐号是否存在
if not exists (select 1 from w_MainAccountInfo where nAccountID=@nAccountIDTo)
begin
set @rv=-1
return
end
--推断账号的状态是否正常
if not exists(select 1 from w_MainAccountInfo ma left join w_MainAccountDetailInfo da on ma.NAccountID=da.NAccountID where ma.naccountID =@nAccountIDTo and da.coldtime<getdate() and ma.status=1)
begin
set @rv=-2
end
--推断订单号是否存在,存在则又一次生成
if exists (select 1 from w_OnlinePayOrderInfo where OrderNo=@PayPalOrderNo)
begin
set @PayPalOrderNo=dbo.f_generateOrderNO(@BuyType,@nToGameID,newid())
end
--查询账户信息
select @sAccountFrom=sAccount from w_MainAccountInfo where nAccountID=@nAccountIDFrom
select @sAccountTo=sAccount from w_MainAccountInfo where nAccountID=@nAccountIDTo
--写入订单表
set @orderNO = @PayPalOrderNo -- 订单号为卡号 -- dbo.f_generateOrderNO(1,@cardCountry,newid())
--查询汇率。将金额兑换为美元
if @nMoneyType <> 99
begin
select top 1 @rate = moneyprice/balanceMoneyPrice,@LocalMoneyType=balanceMoneyType from w_OnlinePayExchangeRate where moneyType = @nMoneyType order by AddDate desc
set @LocalMoneyPrice = @cTotalMoney / @rate
end
else
begin
set @rate=1
set @LocalMoneyPrice =
@cTotalMoney
set @LocalMoneyType=
@nMoneyType
end
--查询赠送点数
declare @GiftPoints int
declare @RealnGamePoint int
if(@nToGameID>0)
begin
--exec mp_w_RechargeGiftPoints @orderNO,@nToGameID,@PayType,@nGamePoint,@NaccountIDTo,@GiftPoints output
--declare @INGameServerName nvarchar(10)
--if(@nToGameID=3 or @nToGameID=12 or @nToGameID=18 or @nToGameID=19)
--begin
-- set @INGameServerName = 'S'+CONVERT(nvarchar(10),@GiftServerID)
--end
--exec mp_w_RechargeServerGiftPoints @orderNO,@nToGameID,@PayType,@nGamePoint,@nAccountIDTo,@INGameServerName,@GiftPoints output
exec mp_w_RechargeServerGiftPoints @orderNO,@nToGameID,@PayType,@nGamePoint,@nAccountIDTo,@nToGameServerID,@GiftPoints output
end
else if(@nToGameID=0)
begin
set @GiftPoints=0
end
--手工兑换上线后。调用存储过程需删除
--exec mp_w_RechargeGiftPoints @orderNO,@nToGameID,@PayType,@nGamePoint,@NaccountIDTo,@GiftPoints output
set @RealnGamePoint=@nGamePoint+@GiftPoints
--插入订单表 OrderState为0
insert into w_OnlinePayOrderInfo(NaccountID,sAccount,OrderNo,MoneyPrice,MoneyType,OrderState
,BuyVMoneyNum,BuyGamePointNum,balanceMoneyPrice,balanceMoneyType,balanceRate,balancePoundage
,AddDate,PayDate,PayType,nAccountID_To,sAccount_To,UserHostIP
,SendVMoneyDate,GameID,MoneyOldPrice,RechargeArea,UserName,UserEmail
,UserTel,RechargeServerID)
values (@NaccountIDFrom,@sAccountFrom,@orderNO,@LocalMoneyPrice,@LocalMoneyType,0
,@nVMoney,@RealnGamePoint,@cTotalMoney,@nMoneyType,@rate,0
,getdate(),0,@PayType,@NaccountIDTo,@sAccountTo,@AccountIP
,0,@nToGameID,0,@nToGameAreaID,@AccountName,@AccountEmail
,@AccountTel,@nToGameServerID)
select @orderID=@@identity
if(LEN( @AccountName)>58)
SET @SKUID=substring( @AccountName,1,56)
else
SET @SKUID=@AccountName
insert into w_OnlinePayOrderDetailInfo(OrderID,ItemNum,cVmoneyNum,cMoneyPrice,cMoneyType,cGamePointNum) values (@orderID,1,@nVMoney,@cTotalMoney,@nMoneyType,@nGamePoint)
insert into w_OnlinePayBuyerInfo(OrderID,INGameRoleName,INGameServerName,SKUID) values (@orderID,@GameRoleName,@nToGameServerID,@SKUID)
set @rv=@orderID
set @rOrderNo=@orderNO
set @rBalanceMoney=@LocalMoneyPrice
--记录赠送日志
if(@GiftPoints > 0)
begin
update w_OnlinepayGiftPointsHistory set orderid=@orderID,naccountid=@nAccountIDTo,
naccountname=@sAccountTo,rechargedate=getdate() where orderno=@OrderNo
end
----订单日志
--insert into w_OnlinePayOrderLog(info) values ('PayPal_All订单:' + @orderNO + '生成成功')
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程參数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, int DataBaseType, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(GetDBGameConnstring(DataBaseType)))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
command.CommandTimeout = 60;
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
public static void OnlineRechargePayPalAll(string OrderNo, int AccountIDFrom, int AccountIDTo, string TotalMoney, int PriceType, int GameID, int GameArea, int AreaServerID, string sGameRoleName, int vMoney, int GamePoint, string IP, string Name, string
Email, string Tel, int PayType, int BuyType, out int ErrorCode, out string ReturnOrderNo, out string BalanceMoney)
{
int iRows = 0;
SqlParameter[] parsRechargePayPal = {
new SqlParameter("@PayPalOrderNo", SqlDbType.NVarChar,50),
new SqlParameter("@nAccountIDFrom", SqlDbType.Int),
new SqlParameter("@nAccountIDTo", SqlDbType.Int),
new SqlParameter("@cTotalMoney", SqlDbType.Decimal),
new SqlParameter("@nMoneyType",SqlDbType.Int),
new SqlParameter("@nToGameID",SqlDbType.Int),
new SqlParameter("@nToGameAreaID",SqlDbType.Int),
new SqlParameter("@nToGameServerID",SqlDbType.Int),
new SqlParameter("@GameRoleName",SqlDbType.NVarChar,50),
new SqlParameter("@nVMoney",SqlDbType.Int),
new SqlParameter("@nGamePoint",SqlDbType.Int),
new SqlParameter("@AccountIP",SqlDbType.NVarChar,50),
new SqlParameter("@AccountName",SqlDbType.NVarChar,150),
new SqlParameter("@AccountEmail",SqlDbType.NVarChar,150),
new SqlParameter("@AccountTel",SqlDbType.NVarChar,50),
new SqlParameter("@PayType",SqlDbType.Int),
new SqlParameter("@BuyType",SqlDbType.Int),
new SqlParameter("@rv",SqlDbType.Int),
new SqlParameter("@rOrderNo",SqlDbType.NVarChar,50),
new SqlParameter("@rBalanceMoney",SqlDbType.Decimal)};
parsRechargePayPal[0].Value = OrderNo;
parsRechargePayPal[1].Value = AccountIDFrom;
parsRechargePayPal[2].Value = AccountIDTo;
parsRechargePayPal[3].Value = TotalMoney;
parsRechargePayPal[4].Value = PriceType;
parsRechargePayPal[5].Value = GameID;
parsRechargePayPal[6].Value = GameArea;
parsRechargePayPal[7].Value = AreaServerID;
parsRechargePayPal[8].Value = sGameRoleName;
parsRechargePayPal[9].Value = vMoney;
parsRechargePayPal[10].Value = GamePoint;
parsRechargePayPal[11].Value = IP;
parsRechargePayPal[12].Value = Name;
parsRechargePayPal[13].Value = Email;
parsRechargePayPal[14].Value = Tel;
parsRechargePayPal[15].Value = PayType;
parsRechargePayPal[16].Value = BuyType;
parsRechargePayPal[17].Direction = ParameterDirection.Output;
parsRechargePayPal[17].Value = 0;
parsRechargePayPal[18].Direction = ParameterDirection.Output;
parsRechargePayPal[18].Value = "";
parsRechargePayPal[19].Direction = ParameterDirection.Output;
parsRechargePayPal[19].Value = "0.0";
parsRechargePayPal[19].Precision = 10;
parsRechargePayPal[19].Scale = 2;
DbHelperSQL.RunProcedure("mp_w_RechargePortalPayPal_All", parsRechargePayPal, out iRows);
ErrorCode = CmnProc.getInt(parsRechargePayPal[17].Value);
ReturnOrderNo = CmnProc.getString(parsRechargePayPal[18].Value);
BalanceMoney = CmnProc.getString(parsRechargePayPal[19].Value);
}
带输出參数的存储过程的定义,以及在aso.net中调用的更多相关文章
- C#调用Oracle带输出数据集的存储过程
1.创建一个带输出数据集的Oracle存储过程 create or replace procedure PRO_test(in_top in number,cur_out out sys_refcur ...
- 各种python 函数參数定义和解析
python 中的函数參数是赋值式的传递的,函数的使用中要注意两个方面:1.函数參数的定义过程,2.函数參数在调用过程中是怎样解析的. 首先说一下在python 中的函数调用过程是分四种方式的.这里且 ...
- MySQL 存储过程传參之in, out, inout 參数使用方法
存储过程传參:存储过程的括号中.能够声明參数. 语法是 create procedure p([in/out/inout] 參数名 參数类型 ..) in :给參数传入值,定义的參数就得到了值 ou ...
- 【VBA研究】VBA自己定义函数參数类型不符的错误
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/iamlaosong/article/details/36871769 作者:iamlaosong 1 ...
- php中的$_GET怎样获取带有井号“#”的參数
<?php echo $_GET['key']; ?> 当url为http://test.com/c.php?key=999时,正常输出:999 当url为http://test.com/ ...
- C中參数个数可变的函数
一.什么是可变參数 我们在C语言编程中有时会遇到一些參数个数可变的函数,比如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一 ...
- 我的Spring之旅(二):为请求加入參数
1.前言 在上一篇我的Spring之旅(一)中,我们仅仅是利用不带參数的请求返回一个网页或一段json,在实际的B/S.C/S网络交互中,请求中须要自己定义的參数.本篇将简单地为之前的请求加入參数. ...
- NGINX模块开发 之 验证URL參数
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/RoyalApex/article/details/26404379 作者:邹祁峰 邮箱:Qifeng ...
- kettle參数、变量具体解说
kettle參数.变量具体解说 kettle 3.2 曾经的版本号里仅仅有 variable 和 argument,kettle 3.2 中.又引入了 parameter 概念.variable 即e ...
随机推荐
- Python标准库:内置函数callable(object)
假设对象object參数是能够调用的对象,就返回True.否则返回False.只是要注意的是,当一个对象是能够调用的.并不表示调用该对象时运行一定成功,但不可调用的对象去调用时一定不会成功.假设类对象 ...
- 深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇
笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origi ...
- CSDN高校俱乐部第二届战神杯第二题题解
两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍.要保证结果非负, 首先得到0的人获胜. 比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8. ...
- BroadcastReceiver类
java.lang.Object ↳ android.content.BroadcastReceiver 已知直接子类 AppWidgetProvider DeviceAdminReceiver ...
- 防止 Chrome 屏蔽 非官方 扩展程序 教程(二)
说明 前面介绍过一篇通过开发人员模式载入扩展程序的方法,尽管能够正常使用,可是每次又一次打开 Chrome 都会弹出询问窗体,比較麻烦.这里介绍第二种防止屏蔽的方法.与前一种方法相比,尽管应用的步骤多 ...
- Object::connect: Cannot queue arguments of type 'QMap<QString,QString>'(要使用qRegisterMetaType<StringMap>进行注册)
QObject::connect: Cannot queue arguments of type 'QMap<QString,QString>',(Make sure 'QMap<Q ...
- jquery 弹窗插件 layer
jquery 弹窗插件 layer 官网:http://sentsin.com/jquery/layer/ 1 <!DOCTYPE html PUBLIC "-//W3C//DTD H ...
- webservice为什么不能用List参数,而只能用数组代替,我想是否因为List没有具体的类型信息,但用泛型的List(如:List<customer>)为什么也不行。如果用作参数的类中含有List<T>字段该如何处理?webservice参数是否支持
转自:https://social.microsoft.com/Forums/zh-CN/aded4301-b5f1-4aa6-aa46-16c46a60d05e/webservice20026201 ...
- Java中的作用域有哪些
在Java语言中,变量的类型主要有3种:成员变量.静态变量和局部变量 首先说静态变量跟局部变量 静态变量不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配 ...
- Hua Wei 机试题目三---2014
一.根据对应规则进行翻译输出 描述:已知有如下的对应规则: ,则输入任意个正整数,输出经过规则翻译以后对应的结果. 例如:输入:1234:输出bcde. 题目很简单,我觉得需要注意的问题就是对于大整数 ...