declare 
  @productId int
begin
SELECT @productId = ProductId FROM PTOrderDetail
print @productId
end每次执行上面的语句后,为什么查询出来后再赋值给@productId的结果总是同一个值?
这是怎么回事?

解决方案 »

  1.   

     SELECT @productId = ProductId FROM PTOrderDetail
    这一句加个where 条件,你试着用不同的where条件就出来不同的结果了
      

  2.   

    因为每次查出一个ProductId就对变量@productId赋值,也就是说后面的赋值会把前面的值覆盖,所以这样select出来的@productId的值肯定是表中最后一个productid的值
      

  3.   

    declare 
         @productId int
    begin
        SELECT @productId = ProductId FROM PTOrderDetail
        print @productId
    end为语句最后一条记录的值
      

  4.   

    declare 
         @productId int
    SET @productId =0
    DECLARE @iNT INT
    SET @INT=(SELECT MAX(ProductId ) FROM PTOrderDetail)
    WHILE    @productId<=@INT
    begin
        SELECT @productId = ProductId FROM PTOrderDetail
        print @productId
    SET    @productId=@productId+1
    end
    不会吧,如果不是一条记录你早都报错了,要么写个循环
      

  5.   

    declare @productId int
    declare @COUNT int
    SET @COUNT =0
    DECLARE @iNT INT
    SET @INT=(SELECT MAX(ProductId ) FROM PTOrderDetail)
    WHILE    @COUNT<=@INT
    begin
        SELECT @productId = ProductId FROM PTOrderDetail
        print @productId
    SET    @COUNT=@COUNT+1
    end这样试试/
      

  6.   

    你这样写的话@productId的值永远是表中最后一条记录的赋值
      

  7.   

    如果楼主是想取出最后插入数据的Id,可以用
    Select @@identity楼主的SQL语句,是获得最后一个记录的id,但是要确定最后一条记录是哪条记录(排序)