| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 684 人关注过本帖
标题:存储过程 Id 设置为 Output!
只看楼主 加入收藏
kevintang
Rank: 4
等 级:业余侠客
威 望:9
帖 子:799
专家分:236
注 册:2008-2-14
结帖率:80%
收藏
已结贴  问题点数:0 回复次数:2 
存储过程 Id 设置为 Output!
存储过程:

ALTER PROCEDURE[dbo].[MAJ_Role_Save]
    -- Add the parameters for the stored procedure here
    @Id Bigint =0 OUTPUT,
    @RoleName nvarchar(50) =null,
    @TokenList nvarchar(max) = null,
    @CreateTime DateTime = null,
    @UpdateTime DateTime = null
AS
BEGIN
    IF @Id = 0
    BEGIN
        insert into dbo.MAJ_Role
    (
        RoleName ,
        TokenList,
        CreateTime,
        UpdateTime
    )
            values
    (
        @RoleName ,
        @TokenList,
        @CreateTime,
        @UpdateTime
    )
        -- Return Id
        SET @Id = SCOPE_IDENTITY();
    END
    ELSE
    BEGIN
        update dbo.MAJ_Role set
        RoleName = @RoleName ,
        TokenList = @TokenList,
        UpdateTime = @UpdateTime
        where Id = @Id
    END
END


测试代码:

  public static void Save(string roleName, string tokenList,DateTime createTime,DateTime updateTime)
    {
        string connString = System.Configuration.ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
        long Id = 0;
        using (TransactionScope scope = new TransactionScope())
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                // Stored procedure
                SqlCommand cmd = new SqlCommand("dbo.MAJ_Role_Save", conn);
                = CommandType.StoredProcedure;
                cmd.Parameters.Add("@Id", SqlDbType.Int).Value = Id;
                cmd.Parameters.Add("@RoleName", SqlDbType.NVarChar, 50).Value = roleName;
                cmd.Parameters.Add("@TokenList", SqlDbType.NVarChar, 1000).Value = tokenList;
                cmd.Parameters.Add("@CreateTime", SqlDbType.DateTime).Value = createTime;
                cmd.Parameters.Add("@UpdateTime", SqlDbType.DateTime).Value = updateTime;



                //cmd.Parameters[@test].Direction = System.Data.ParameterDirection.ReturnValue;
                cmd.Parameters[0].Direction = System.Data.ParameterDirection.Output;


              
                int count = cmd.ExecuteNonQuery();
               
                conn.Close();

                Id = Convert.ToInt64(cmd.Parameters["@Id"].Value);
            

            }
            ();
        }

    Id = Convert.ToInt64(cmd.Parameters["@Id"].Value);//这句话 出错! 存储过程没执行成功!没有数据插入!
 
搜索更多相关主题的帖子: null 
2011-01-04 14:49
chenguoxing517
Rank: 7Rank: 7Rank: 7
来 自:广东广州
等 级:黑侠
威 望:1
帖 子:154
专家分:619
注 册:2009-9-28
收藏
得分:18 
貌似获取返回值不是这样获取的
2011-01-06 12:59
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:18 
MyCommand.Parameters["@Id"].Direction = ParameterDirection.Output;

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-01-06 15:54
快速回复:存储过程 Id 设置为 Output!
数据加载中...
 
   



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

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