Hi, 大神们,我需要执行存储过程,直接调用USP_WebService_Action_Application 。
不过碰到一些问题:
1. 我想直接取RefTable_FinalDecision里的数据,目前有三笔申请时可以通过where条件加黑的。这个变量我不知道如何全部取,但是我这边print @appkey为啥之取了一笔申请号,应该从表中有三笔申请满足where可以取出来。如何把表中满足条件的所有数据都取到变量中,并都执行存储过程呢?且每个变量跟随申请号自动变化呢?通过这个存储过程来执行呢?
   
标红的是参数
declare @AppKey NVARCHAR(34),
    @Action_Taken NVARCHAR(1),
    @Decision_Reason NVARCHAR(100),
    @Nature_of_Fraud NVARCHAR(50),
    @User_Id NVARCHAR(20),
    @BlacklistXML NVARCHAR(MAX),

    @Application_Number NVARCHAR(25)AppKey = 'ARGCN'+applicationnumber + 'card'构成    select @AppKey = 'ARGCN'+applicationnumber+'CARD',@BlacklistXML='<Application><Organisation>ARG </Organisation><Country_Code>CN</Country_Code><Application_Number>'+applicationnumber+'</Application_Number><Application_Date>2011-5-27</Application_Date><Application_Type>CARD</Application_Type><Decision_Reason>'+DecisionReason+'</Decision_Reason><AppKey>ARGCN'+applicationnumber+'CARD</AppKey><Field_Error_Flag>0</Field_Error_Flag></Application>' from RefTable_FinalDecision(nolock) A
    left join A_Application(nolock) B on A.ApplicationNumber = B.Application_Number 
    where DecisionReason in ('A01——ID黑名单-I类黑名单','A11——黑名单-虚假ID(ID、户籍证明)','A12——黑名单-身份盗用','A13——黑名单-身份盗用(盗用人)',
      'A21——黑名单-办卡公司','A22——黑名单-套现公司','A23——黑名单-批量欺诈','A31——黑名单-虚假公司','A32——黑名单-虚假雇佣',
      'A33——黑名单-虚假工作信息','A34——黑名单-虚假证明文件','A35——黑名单-其他信息虚假','F01——收入证明虚假(公司收入证明)',
      'F02——资产证明虚假(房产证、车辆行驶证)','F03——财力证明虚假(银行对账单、税单)','F04——企业证明虚假(营业执照)',
      'F05——工作证明虚假(工作证、名片、工牌)','F06——居住证明虚假(公用事业费账单、暂住证、租房合同)','F07——其他虚假文件',
      'G01——虚假雇佣','E03——其他信息虚假','E04——客户否认办卡,但表填关键信息真实','H21——IHC手工提报(否认办卡,RJ52)',
      'H22——IHC手工提报(办卡公司、他人代办,RJ57)','H23——IHC手工提报(单址、单电非报单位或单位信息无法报出,RJ73)') and 
      A.ApplicationNumber=B.Application_Number
      --select @AppKey = 'ARGCN'+applicationnumber+'CARD' from RefTable_FinalDecision(nolock)
      --@Appkey = 'ARGCN'+@Application_Number+'CARD'
    print @appkey;
    print @BlacklistXMLprint的结果是:ARGCN1000182097CARD
<Application><Organisation>ARG</Organisation><Country_Code>CN</Country_Code><Application_Number>1000182097</Application_Number><Application_Date>2011-5-27</Application_Date><Application_Type>CARD</Application_Type><Decision_Reason>A11——黑名单-虚假ID(ID、户籍证明)</Decision_Reason><AppKey>ARGCN1000182097CARD</AppKey><Field_Error_Flag>0</Field_Error_Flag></Application>
要执行这个存储过程
EXEC USP_WebService_Action_Application @appkey,'K','A11——黑名单-虚假ID(ID、户籍证明)',Null,'FinalDecision','<Application><Organisation>ARG</Organisation><Country_Code>CN</Country_Code><Application_Number>1043541227</Application_Number><Application_Date>2011-5-27</Application_Date><Application_Type>CARD</Application_Type><Decision_Reason>A11——黑名单-虚假ID(ID、户籍证明)</Decision_Reason><AppKey>ARGCN1043541227CARD</AppKey><Field_Error_Flag>0</Field_Error_Flag></Application>'
 
 
谢谢

解决方案 »

  1.   

    declare @AppKey NVARCHAR(1000)=''select @AppKey = @AppKey+',ARGCN'+applicationnumber+'CARD'
    ---------这两段赋值改改,你的XML生成也只会生成一条,你可用 for xml path去生成
      

  2.   

    把你的XML多条记录时生成格式是?
      

  3.   


    都是一条一条操作的。这个判定的存储过程只支持一条一条做。是不是需要写个C#程序?
    但是C#里也不太好做。我思路比较狭隘,如下,调用了一个存储过程,那么这个存储过程运行了一次。
    而这个FinalDecision_Blacklist存储过程还是在里面调用的USP_WebService_Action_Application 这个判定存储。
    就等于还是只能单笔申请调用,我想实现在某张表中的所有申请号都调用这个。  using (SqlConnection conn = new SqlConnection(connection))
                {
                    conn.Open();
                    SqlCommand cmdd = new SqlCommand("USP_xxxx_FinalDecision_Blacklist", conn);
                    cmdd.CommandType = CommandType.StoredProcedure;
                    cmdd.CommandTimeout = 99999999;
                    cmdd.ExecuteNonQuery();
                }