我有两个数据库 db1 db2
db1 有存储过程 sp1 参数 id int output.
db2 有存储过程 sp2 参数 id int output.sp1 自动调用 sp2, sp2 中对db2 一个table 做 insert into 操作,然后新生成的id 我现在用c# 调用sp1 当程序运行结束后, 是否可以在C# 这边得到 新生成的id?

解决方案 »

  1.   

    我不知道不同的库之间能不能互相调用存储过程
    其实你可以放在一个库里执行,给你个代码
    其实你可以把一个sp1写成函数,把另一个写成存储过程
    下面是我写的一个例子, 你大概看下吧!create function test(@Num varchar(20))
    returns varchar(50)
    as
    begin
    declare @MSG varchar(20)
    if(@Num=1)
    select @MSG='正确'
    else
    select @MSG='错误'
    return @MSG
    endcreate proc test1
    (
      @id varchar(20)
    )
    as
    begin
    select dbo.test(@id)
    endexec test1 @id=1
      

  2.   


    create   proc   proc_test   
    @p1   int   =   0,   
    @p2   int      output
    as 
    select   @p2   =   @p1   *2 
    go --调用 
    declare   @p2_output   int execute   proc_test   50,   @p2_output   output 
    select   @p2_output 
    go drop   proc   proc_test输出得100
      

  3.   

           //连接数据库
            string myStr = ConfigurationManager.AppSettings["connectionstring"].ToString();
            SqlConnection myConn = new SqlConnection(myStr);
            myConn.Open();        //创建SqlCommand对象
            SqlCommand cmd = new SqlCommand("CheckUser",myConn);
            cmd.CommandType = CommandType.StoredProcedure;                //添加参数
            SqlParameter Userid = cmd.Parameters.Add("@Userid", SqlDbType.Char);
            SqlParameter Userpsw= cmd.Parameters.Add("@Userpsw", SqlDbType.Char);
            SqlParameter returnvalue = cmd.Parameters.Add("@returnvalue", SqlDbType.Int);
            
            //指定参数是只可输入(Input)、输出(Output)还是返回值(ReturnValue)
            Userid.Direction = ParameterDirection.Input;
            Userpsw.Direction = ParameterDirection.Input;
            returnvalue.Direction = ParameterDirection.ReturnValue;        
            //为传递给存储过程的参数赋值
             Userid.Value =tbUserName.Text.Trim();
            Userpsw.Value = tbPsw.Text.Trim();        //执行SQL存储过程
             cmd.ExecuteNonQuery();
           int Maxid=((int)returnvalue.Value; 
      

  4.   

     http://www.cnblogs.com/ruiyi1987/archive/2009/03/25/1421213.html
    你看看这个,对你有帮助。
      

  5.   

    你让sp2的返回值返给sp1,然后直接在c#里获取sp1的返回值行不?