关于存储过程的输出参数问题
这是小弟的产生订单的存储过程:
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);