首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行SQL存储过程

问执行SQL存储过程
EN

Stack Overflow用户
提问于 2012-04-05 11:31:57
回答 4查看 742关注 0票数 0
代码语言:javascript
复制
ALTER PROCEDURE dbo.SP_InsertTicket
    /*
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )
    declare @i as numeric
    exec SP_InsertTicket 'asd','cd@y.com','232323','dasasd','sdasdas','01-jan-2010',@i output,'sdas','sdasd','02-jan-2010'
    select @i*/
    @Client_FullName varchar(30),
    @Client_EmailAdd varchar(50),
    @Client_Telephn varchar(15),
    @Ticket_Subject varchar(50),
    @Ticket_Source varchar(15),
    @Ticket_CreateDate Datetime,

    @Ticket_Id integer output,
    @Que_Message varchar(100),
    @Que_Attachment varchar(max),
    @Que_UpdateDate Datetime

AS
    declare @TickID integer;
    /* SET NOCOUNT ON */
    BEGIN

       INSERT INTO tbl_Ticket (Client_FullName,Client_EmailAdd,Client_Telephn,Ticket_Subject,Ticket_Source,Ticket_CreateDate)

                     VALUES (@Client_FullName,  @Client_EmailAdd ,@Client_Telephn,@Ticket_Subject,@Ticket_Source,@Ticket_CreateDate)


        Select @TickID = MAX(Ticket_Id) from tbl_Ticket


        set @Ticket_Id=@TickID

        INSERT INTO tbl_TicketQuestion (Ticket_Id,Que_Message,Que_Attachment,Que_UpdateDate)

                     VALUES (@TickID,@Que_Message,@Que_Attachment,@Que_UpdateDate)

     END

    RETURN

这是我的存储过程,在这个过程中,我需要返回Ticket_Id才能通过电子邮件应用程序发送它,它插入的记录很好,不能在DAL中恢复值,下面是执行存储过程的代码,它返回值。

代码语言:javascript
复制
public class cls_DAL
{
    public cls_DAL()
    {
        //
        // TODO: Add constructor logic here
        //
    }

   static string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString.ToString();

  SqlConnection con = new SqlConnection(strConn);
  SqlCommand cmd = new SqlCommand();
  SqlDataAdapter da = new SqlDataAdapter();
  DataSet ds = new DataSet();
  DataTable dt = new DataTable();



  public int insert_NewTicket(string fullname, string emailadd, string telephone, string subject, string source, DateTime date,string Message, string attachment, DateTime updatedate)
  {
      try
      {  
            con.Open();
            cmd = new SqlCommand("SP_InsertTicket", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Client_FullName", fullname);
            cmd.Parameters.AddWithValue("@Client_EmailAdd", emailadd);
            cmd.Parameters.AddWithValue("@Client_Telephn",telephone);
            cmd.Parameters.AddWithValue("@Ticket_Subject", subject);
            cmd.Parameters.AddWithValue("@Ticket_Source",source);
            cmd.Parameters.AddWithValue("@Ticket_CreateDate",date);
            cmd.Parameters.AddWithValue("@Ticket_Id",0);
            cmd.Parameters.AddWithValue("@Que_Message", Message);
            cmd.Parameters.AddWithValue("@Que_Attachment", attachment);
            cmd.Parameters.AddWithValue("@Que_UpdateDate",updatedate);

            cmd.Parameters["@Ticket_Id"].Direction = ParameterDirection.InputOutput;

            return cmd.ExecuteNonQuery();
            int i = (int)cmd.Parameters["@Ticket_Id"].Value;

        }
     catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            con.Close();
            con.Dispose();
        }
    }
}
EN

回答 4

Stack Overflow用户

发布于 2012-04-05 11:39:56

只是猜测,不确定。您可以尝试以下几种方法:

代码语言:javascript
复制
cmd.Parameters["@Ticket_Id"].Direction = ParameterDirection.InputOutput;

至

代码语言:javascript
复制
cmd.Parameters["@Ticket_Id"].Direction = ParameterDirection.Output;
票数 1
EN

Stack Overflow用户

发布于 2012-04-05 11:43:51

无法编译的代码将无法到达

代码语言:javascript
复制
cmd.Parameters["@Ticket_Id"].Direction = ParameterDirection.InputOutput;              cmd.ExecuteNonQuery();
return (int)cmd.Parameters["@Ticket_Id"].Value; 

或者@Matt的解决方案..。

演员阵容也不确定..。

在多用户场景中,ticketid将进行竞赛。想想能做什么(威尔!)如果你同时运行其中的两个

应该在事务中包装。

而且你也不需要Max,也可以使用Scope_Identity

票数 1
EN

Stack Overflow用户

发布于 2012-04-05 11:39:21

可以在Insert语句之后运行Select Scope_Identity()。然后在DAL方法中使用return Convert.ToInt32(cmd.ExecuteScalar())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10027774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档