首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于存储过程的输出参数有关问题

2012-01-24 
关于存储过程的输出参数问题这是小弟的产生订单的存储过程:CREATEPROCEDUREgenerateorder(@ticketnostring

关于存储过程的输出参数问题
这是小弟的产生订单的存储过程:
CREATE   PROCEDURE     generateorder   (@ticketnostring   varchar(300),@fare   money,@orderby   varchar(30),@contactname   varchar(30),
@contactcellphone   varchar(20),@contactphone   varchar(30),@contactemail   varchar(50),@getticketno   varchar(20)   OUTPUT)
AS
DECLARE   @orderID   VARCHAR(50),
                @date     DATETIME,
                @no   INT,  
                @BIG   BIGINT

    declare       @NewID       CHAR(14)      
    declare       @year       CHAR(4)      
    declare       @month       char(2)      
    declare       @day       char(2)    
    SET       @date=GETDATE()  
    SET       @year       =       cast(year(getdate())       as       char)      
    SET       @month       =       CAST(month(getdate())       as       char)      
    SET       @day       =       cast(day(getdate())       as       char)      
    SET       @NewID       =       replace((@year+@month+@day), '   ', ' ')       +       '000001 '    
    SET       @BIG=@NewID  
    --SELECT       @NewID      
  --SELECT       *       FROM       订单信息表    
      --SELECT       MAX(订单编号)     FROM       订单信息表
      --ELECT       MIN(订单编号)     FROM       订单信息表  

    WHILE       1> 0
    BEGIN      
   
                IF(EXISTS(SELECT     *     FROM       订单信息表   WHERE   订单编号=@BIG))      
                BEGIN
                SET       @BIG       =   @BIG           +       1  
               
                END  
                ELSE  
                BREAK
    END
    SET   @NewID=@BIG      

INSERT   INTO   订单信息表   VALUES(@NewID,@ticketnostring,@orderby,@fare,@date,@contactname   ,@contactcellphone   ,@contactphone,@contactemail)
SELECT     @getticketno=   @NewID
GO
这个过程没有错;
下面是我的调用代码:
this.sqlCommand1.CommandType=CommandType.StoredProcedure;
this.sqlCommand1.Parameters[1].Value=ticketnostring;


this.sqlCommand1.Parameters[2].Value=orderfare;
this.sqlCommand1.Parameters[3].Value=this.Session[ "MemUserName "].ToString().Trim();
this.sqlCommand1.Parameters[4].Value=this.txtconname.Text.Trim();
this.sqlCommand1.Parameters[5].Value=this.txtconcellphone.Text.Trim();
this.sqlCommand1.Parameters[6].Value=this.txtconphone.Text.Trim();
this.sqlCommand1.Parameters[7].Value=this.txtconemail.Text.Trim();
this.sqlCommand1.Parameters[7].Value=orderid;
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
string   OrderID=this.sqlCommand1.Parameters[8].Value;
this.Session[ "OrderID "]=OrderID;
this.sqlConnection1.Close();
我想在订单生成后通过rderID=this.sqlCommand1.Parameters[8].Value;得到这个订单号,可是提示不行,怎么回事啊\
在线等

[解决办法]
1。
详细错误?


2.
orderID=this.sqlCommand1.Parameters[8].Value;
---------------
对于这个参数,你声明为 Output 了吗?如:
SqlParameter p8 = new SqlParameter( "@getticketno ", SqlDbType.Varchar, 20);
p8.Direction = ParameterDirection.Output;

[解决办法]
this.sqlCommand1.Parameters[8].Direction=ParameterDirection.Output;
要加上这一个的,表示该参数是输出参数

[解决办法]
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
this.sqlConnection1.Close();
//先关闭连接,再得到存储过程输出参数的返回值
OrderID=this.sqlCommand1.Parameters[8].Value;
this.Session[ "OrderID "]=OrderID;
this.Response.Write(OrderID);

热点排行