标题:请教高手们一个关于Parameters中的ReturnValue问题啊
只看楼主
skybirdzw
Rank: 2
等 级:论坛游民
帖 子:189
专家分:12
注 册:2007-3-30
结帖率:66.67%
已结贴  问题点数:10 回复次数:4 
请教高手们一个关于Parameters中的ReturnValue问题啊
(分不多了,希望别介意啊。)
代码如下:
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
= CommandType.Text;//执行类型:命令文本
//下面是添加参数
if (prams != null)
 {
 foreach (SqlParameter parameter in prams)
 cmd.Parameters.Add(parameter);
}
//加入返回参数
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int,

4,ParameterDirection.ReturnValue, false, 0, 0,string.Empty, DataRowVersion.Default,

null));

这里的procName并不是存储过程的名字,而是一个SQL语句,如下:procName="INSERT INTO tb_units

(unitcode, fullname, tax, tel, linkman, address, accounts) VALUES

(@unitcode,@fullname,@tax,@tel,@linkman,@address,@accounts)"

-------------------------------------------------------------

下面是执行这个SQL并取得返回值代码:
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
//得到执行成功返回值
return (int)cmd.Parameters["ReturnValue"].Value;

问题是,在哪里设置了ReturnValue这个参数的值呢?
搜索更多相关主题的帖子: false null 名字 
2011-02-19 11:33
skybirdzw
Rank: 2
等 级:论坛游民
帖 子:189
专家分:12
注 册:2007-3-30
得分:0 
咋没人回答我啊??
2011-02-19 13:27
kevintang
Rank: 4
等 级:业余侠客
威 望:9
帖 子:799
专家分:236
注 册:2008-2-14
得分:4 
  public static void ReadyOrderSave(string orderNo, long operatorId, long customerId, string customerName, string customerDepart,
          string customerTEL, long productId, int problemProgress, DateTime repairTime, string problemOverView, string printType, out long Id)
        {

            string connString = System.Configuration.ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
            using (TransactionScope scope = new TransactionScope())
            {
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    conn.Open();
                    // Stored procedure
                    SqlCommand cmd = new SqlCommand("dbo.MAJ_ReadyOrder_Save", conn);
                     = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@OrderNo", SqlDbType.NVarChar, 50).Value = orderNo;
                    cmd.Parameters.Add("@OperatorId", SqlDbType.BigInt).Value = operatorId;
                    cmd.Parameters.Add("@CustomerId", SqlDbType.BigInt).Value = customerId;
                    cmd.Parameters.Add("@CustomerName", SqlDbType.NVarChar, 50).Value = customerName;
                    cmd.Parameters.Add("@CustomerDepart", SqlDbType.NVarChar, 50).Value = customerDepart;
                    cmd.Parameters.Add("@CustomerTEL", SqlDbType.NVarChar, 50).Value = customerTEL;
                    cmd.Parameters.Add("@ProductId", SqlDbType.BigInt).Value = productId;
                    cmd.Parameters.Add("@ProblemProgress", SqlDbType.Int).Value = problemProgress;
                    cmd.Parameters.Add("@RepairTime", SqlDbType.DateTime).Value = repairTime;
                    cmd.Parameters.Add("@ProblemOverView", SqlDbType.NVarChar, 500).Value = problemOverView;
                    cmd.Parameters.Add("@PrintType", SqlDbType.NVarChar, 30).Value = printType;

                    cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.BigInt));
                    cmd.Parameters["@Id"].Direction = ParameterDirection.Output;

                    int count = cmd.ExecuteNonQuery();
                    Id = Convert.ToInt64(cmd.Parameters["@Id"].Value.ToString());
                    conn.Close();
                }
                ();
            }
        }

//存储过程
ALTER PROCEDURE[dbo].[MAJ_ReadyOrder_Save]
    -- Add the parameters for the stored procedure here
    @Id Bigint output,
    @OrderNo nvarchar(50) = null,--订单编号
    @OperatorId Bigint = null,--操作员
    @CustomerId Bigint = null,--客户单位名称
    @CustomerName nvarchar(50) = null,--客户联系人
    @CustomerDepart nvarchar(50) = null,--联系部门
    @CustomerTEL nvarchar(50) = null,--联系人电话
    @ProductId bigint = null,--产品ID
    @ProblemProgress int = null,--进度
    @RepairTime datetime = null,--报修时间
    @ProblemOverView nvarchar(max) = null,--问题描述
    @PrintType nvarchar(30) = null--设备型号
AS
BEGIN
   
    insert into MAJ_Order
    (OrderNo,
    OperatorId,
    CustomerId,
    CustomerName,
    CustomerDepart,
    CustomerTEL,
    ProductId,
    ProblemProgress,
    RepairTime,
    ProblemOverView,
    PrintType) values
(
    @OrderNo,
    @OperatorId,
    @CustomerId,
    @CustomerName,
    @CustomerDepart,
    @CustomerTEL,
    @ProductId,
    @ProblemProgress,
    @RepairTime,
    @ProblemOverView,
    @PrintType

)
        -- Return Id
        SET @Id = SCOPE_IDENTITY();

   
END


编程少年基地——少年编程者的练兵场
http://bcsn.    招聘版主中

2011-02-21 17:34
kevintang
Rank: 4
等 级:业余侠客
威 望:9
帖 子:799
专家分:236
注 册:2008-2-14
得分:0 
output 和 ReturnValue 设置应该差不多吧! 你自己对比一下啊!
我没用ReturnValue 过!呵呵!

编程少年基地——少年编程者的练兵场
http://bcsn.    招聘版主中

2011-02-21 17:34
何事惊慌
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:220
专家分:499
注 册:2008-7-2
得分:4 
一般的情况下应该是存储过程中指定返回的值,这个你可以跟踪下,看看是不是和
SqlCommand cmd = new SqlCommand();
int i = cmd.ExecuteNonQuery();这个的返回值一样

QQ:860234001
编程交流群:236949758
2011-02-22 11:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-332419-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.082770 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved