如何使用多个输出参数创建Web服务? [英] How I make web service with multiple output parameters?

查看:49
本文介绍了如何使用多个输出参数创建Web服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试过但它返回null。



我尝试过的事情:



我的存储过程是



I have tried but it returns null.

What I have tried:

My stored Procedure is

USE [webservice]
GO
/****** Object:  StoredProcedure [dbo].[SP_VALIDATE_VIN]    Script Date: 6/30/2017 10:11:32 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[SP_VALIDATE_VIN]
 @p_vin  varchar(1000),
 @Pmc int,
 @VIN                       varchar(1000) output,
@VEHICLE_MODEL             varchar(1000) output,
@MANUFACTURING_MONTH_YEAR  varchar(1000) output,
@INVOICE_NUMBER            varchar(1000) output,
@INVOICE_DATE              varchar(1000) output,
@INVOICE_TYPE              varchar(1000) output,
@INVOICE_DLR_FOR_CD        varchar(1000) output,
@CUST_NAME                 varchar(1000) output,
@CUST_ADDRESS1             varchar(1000) output,
@CUST_ADDRESS2             varchar(1000) output,
@CUST_ADDRESS3             varchar(1000) output,
@CUST_CITY                 varchar(1000) output,
@CUST_STATE                varchar(1000) output,
@CUST_PINCODE              varchar(1000) output,
@CUST_MOBILE               varchar(1000) output,
@CUST_EMAIL                varchar(1000) output,
@ERR_CD                    int output,
@ERR_MSG                   varchar(1000) output
 as begin
 select @VIN=VIN,@VEHICLE_MODEL=VEHICLE_MODEL,@MANUFACTURING_MONTH_YEAR=MANUFACTURING_MONTH_YEAR,@INVOICE_NUMBER=INVOICE_NUMBER,@INVOICE_DATE=INVOICE_DATE,@INVOICE_TYPE=INVOICE_TYPE,@INVOICE_DLR_FOR_CD=INVOICE_DLR_FOR_CD,@CUST_NAME=CUST_NAME,@CUST_ADDRESS1=CUST_ADDRESS1,@CUST_ADDRESS2=CUST_ADDRESS2,@CUST_ADDRESS3=CUST_ADDRESS3,
 @CUST_CITY=CUST_CITY,@CUST_STATE=@CUST_STATE,@CUST_PINCODE=@CUST_PINCODE,@CUST_MOBILE=@CUST_MOBILE,@CUST_EMAIL=CUST_EMAIL,@ERR_CD=ERR_CD,@ERR_MSG=ERR_MSG  from Validate_vin where P_VIN=@p_vin and PMC= @Pmc
 
 end





和我的网络服务代码是





and my webservice code is

public string validate_vin(string _p_vin, int _PMC)
{
    List<Validate_vin> Vinvalidationlist = new List<Validate_vin>();
    try
    {

        // string sql = "select VIN,VEHICLE_MODEL,MANUFACTURING_MONTH_YEAR,INVOICE_NUMBER,INVOICE_DATE,INVOICE_TYPE,INVOICE_DLR_FOR_CD,CUST_NAME,CUST_ADDRESS1,CUST_ADDRESS2,CUST_ADDRESS3,CUST_CITY,CUST_STATE,CUST_PINCODE,CUST_MOBILE,CUST_EMAIL,ERR_CD,ERR_MSG from Validate_vin where P_VIN = '" + _p_vin + "' and PMC = '" + _PMC + "'";
        using (SqlConnection con = new SqlConnection(conn))
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            con.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "SP_VALIDATE_VIN";
            cmd.Parameters.AddWithValue("@p_vin", _p_vin);
            cmd.Parameters.AddWithValue("@Pmc", _PMC);
            cmd.Parameters.Add("@VIN", SqlDbType.VarChar,1000);
            cmd.Parameters["@VIN"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@VEHICLE_MODEL", SqlDbType.VarChar,1000);
            cmd.Parameters["@VEHICLE_MODEL"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@MANUFACTURING_MONTH_YEAR", SqlDbType.VarChar,1000);
            cmd.Parameters["@MANUFACTURING_MONTH_YEAR"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@INVOICE_NUMBER", SqlDbType.VarChar,1000);
            cmd.Parameters["@INVOICE_NUMBER"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@INVOICE_DATE", SqlDbType.VarChar,1000);
            cmd.Parameters["@INVOICE_DATE"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@INVOICE_TYPE", SqlDbType.VarChar,1000);
            cmd.Parameters["@INVOICE_TYPE"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@INVOICE_DLR_FOR_CD", SqlDbType.VarChar,1000);
            cmd.Parameters["@INVOICE_DLR_FOR_CD"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_NAME", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_NAME"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_ADDRESS1", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_ADDRESS1"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_ADDRESS2", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_ADDRESS2"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_ADDRESS3", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_ADDRESS3"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_CITY", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_CITY"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_STATE", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_STATE"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_PINCODE", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_PINCODE"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_MOBILE", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_MOBILE"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@CUST_EMAIL", SqlDbType.VarChar,1000);
            cmd.Parameters["@CUST_EMAIL"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@ERR_CD", SqlDbType.Int);
            cmd.Parameters["@ERR_CD"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@ERR_MSG", SqlDbType.VarChar,1000);
            cmd.Parameters["@ERR_MSG"].Direction = ParameterDirection.Output;
            SqlDataReader dr= cmd.ExecuteReader();
            //SqlDataAdapter da = new SqlDataAdapter("SP_VALIDATE_VIN", conn);
            //DataSet ds = new DataSet();
            //da.Fill(ds);
            while (dr.Read())
            {
                Validate_vin Vin_validation = new Validate_vin();
                Vin_validation.VIN = Convert.ToString(dr["VIN"].ToString());
                Vin_validation.VEHICLE_MODEL= Convert.ToString(dr["VEHICLE_MODEL"].ToString());
                Vin_validation.MANUFACTURING_MONTH_YEAR= Convert.ToString(dr["MANUFACTURING_MONTH_YEAR"].ToString());
                Vin_validation.INVOICE_NUMBER= Convert.ToString(dr["INVOICE_NUMBER"].ToString());
                Vin_validation.INVOICE_DATE= Convert.ToString(dr["INVOICE_DATE"].ToString());
                Vin_validation.INVOICE_TYPE= Convert.ToString(dr["INVOICE_TYPE"].ToString());
                Vin_validation.INVOICE_DLR_FOR_CD= Convert.ToString(dr["INVOICE_DLR_FOR_CD"].ToString());
                Vin_validation.CUST_NAME= Convert.ToString(dr["CUST_NAME"].ToString());
                Vin_validation.CUST_ADDRESS1= Convert.ToString(dr["CUST_ADDRESS1"].ToString());
                Vin_validation.CUST_ADDRESS2= Convert.ToString(dr["CUST_ADDRESS2"].ToString());
                Vin_validation.CUST_ADDRESS3= Convert.ToString(dr["CUST_ADDRESS3"].ToString());
                Vin_validation.CUST_CITY= Convert.ToString(dr["CUST_CITY"].ToString());
                Vin_validation.CUST_STATE= Convert.ToString(dr["CUST_STATE"].ToString());
                Vin_validation.CUST_PINCODE= Convert.ToString(dr["CUST_PINCODE"].ToString());
                Vin_validation.CUST_MOBILE= Convert.ToString(dr["CUST_MOBILE"].ToString());
                Vin_validation.CUST_EMAIL= Convert.ToString(dr["CUST_EMAIL"].ToString());
                Vin_validation.ERR_CD= Convert.ToString(dr["ERR_CD"].ToString());
                Vin_validation.ERR_MSG= Convert.ToString(dr["ERR_MSG"].ToString());
                Vinvalidationlist.Add(Vin_validation);
            }
            con.Close();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {

    }
    return JsonConvert.SerializeObject(Vinvalidationlist, Newtonsoft.Json.Formatting.Indented);
}

推荐答案

你应该从SP返回数据而不是使用put参数。

如下所示



- ========================= ====================

you should return the data from SP instead of using out put paramters.
like below

-- =============================================
ALTER PROCEDURE [dbo].[my_test]	
	(
	@template_id varchar(50)
	
	
	)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT 
      [app_id]
    , [business_domain_id]
     , [business_line]
    ,  [language_cd]
    , [email_type]
    , [email_from]
     , [email_subject]
     [email_body]
  FROM [dbo].[EmailTemplate]
  where @template_id=template_id
END





in .NET





in .NET

public static string getData(string tempid)
        {
            List<MyTemplate> mylist = new List<MyTemplate>();
            SqlDataAdapter da = new SqlDataAdapter();
            System.Data.DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnectionStr"].ToString()))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                con.Open();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "dbo.[my_test]";
                cmd.Parameters.AddWithValue("@template_id", tempid);
                da.SelectCommand = cmd;
                da.Fill(ds);

            }
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0] != null)
            {
                foreach (DataRow Dr in ds.Tables[0].Rows)
                {
                    MyTemplate mTemp = new MyTemplate();
                    mTemp.appId = Dr["app_id"].ToString();
                    mTemp.bDomainId = Dr["business_domain_id"].ToString();
                    mTemp.Bline = Dr["business_line"].ToString();
                    mTemp.emlBody = Dr["email_body"].ToString();
                    mTemp.emlFrom = Dr["email_from"].ToString();
                  //  mTemp.emlSubj = Dr["email_subject"].ToString();
                    mTemp.emlTyp = Dr["email_type"].ToString();
                    mylist.Add(mTemp);

                }

            }


            return JsonConvert.SerializeObject(mylist, Newtonsoft.Json.Formatting.Indented);
        }
}



















JSON回复:












Response in JSON:

<pre lang="objc">

[

{

appId:0ba9a0e7-25d4-4174-967a-956b47d04d4c,

bDomainId:9dd3f102-273c-40a2-a122-69628712680a,

Bline :EUR,

lnG:null,

emlTyp:userName,

emlFrom:支持@ xxx.com,

emlSubj:null,

emlBody:[DEV] www.accessxxx.com

}

]

[
{
"appId": "0ba9a0e7-25d4-4174-967a-956b47d04d4c",
"bDomainId": "9dd3f102-273c-40a2-a122-69628712680a",
"Bline": "EUR",
"lnG": null,
"emlTyp": "userName",
"emlFrom": "support@xxx.com",
"emlSubj": null,
"emlBody": "[DEV] www.accessxxx.com"
}
]


这篇关于如何使用多个输出参数创建Web服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆