@WareHouseCode nvarchar(50),@Description nvarchar(50),
@ParentWareHouseID int,@IsActive bit,
@UserName nvarchar(30),@IsExceptionAllowed bit,@Quota money,
@InsertIDList varchar(6000),@WareHouseID int output AS 
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION
INSERT INTO WareHouses VALUES (@WareHouseCode, @Description, @ParentWareHouseID, @IsActive, @UserName, @IsExceptionAllowed,@Quota)
SELECT @WareHouseID = @@IDENTITY
-- Insert Detail List
IF @InsertIDList IS NOT NULL
begin
declare @ret int
EXECUTE @ret = sp_insertWareHouseDetail @WareHouseID, @InsertIDList
if @ret < 0
begin
rollback
select @WareHouseID = -1
return @ret;
end
end
COMMIT TRANSACTION
SELECT @WareHouseID 'WareHouseID '
GO
麻烦帮忙把关键的地方做下注释好吗??
我就不知道这个存储过程到底是输出的什么,
是return??
还是输出的最后一句?如果是最好一句的话是@WareHouseID 跟'WareHouseID '都输出吗??
难道存储过程要输出两次?困惑中!

解决方案 »

  1.   

    BEGIN
    --定义变量
    DECLARE @WareHouseCode nvarchar(50),
        @Description nvarchar(50), 
        @ParentWareHouseID int,
        @IsActive bit, 
        @UserName nvarchar(30),
        @IsExceptionAllowed bit,
        @Quota money, 
        @InsertIDList varchar(6000),
        --定义输入id变量
        @WareHouseID int output AS 
    --插入数据
    INSERT INTO WareHouses VALUES (@WareHouseCode, @Description, @ParentWareHouseID, @IsActive, @UserName, @IsExceptionAllowed,@Quota) 
    --取出数据的WareHouseID 输入
    SELECT @WareHouseID = @@IDENTITY 
    IF @InsertIDList IS NOT NULL 
    begin 
    declare @ret int 
    EXECUTE @ret = sp_insertWareHouseDetail @WareHouseID, @InsertIDList 
    if @ret  < 0 
    begin 
    rollback --回滚
    select @WareHouseID = -1 
    return @ret; 
    end 
        end 
    COMMIT TRANSACTION --提交事务
    SELECT @WareHouseID 'WareHouseID' 
    END
      

  2.   


    --最后一句你要是不明白就运行一下这个
    --一看你就明白了
    declare @aa varchar(200) --定义变量 
    set @aa=111 --给值 
    select @aa 'id' --定义别名,也就是字段名