CREATE PROCEDURE PickUpWHTableIndexInsert
(@BillOfLadingID char(14) output,
@PickDate smalldatetime,
@kind bit
)AS
select @BillOfLadingID=dbo.NewPickId(@kind)INSERT INTO PickUpWHTableIndex
(
[fBillOfLadingID],
[fPickDate],
[fkind]
)
VALUES
(
@BillOfLadingID,
@PickDate,
@kind
)GO
(@BillOfLadingID char(14) output,
@PickDate smalldatetime,
@kind bit
)AS
select @BillOfLadingID=dbo.NewPickId(@kind)INSERT INTO PickUpWHTableIndex
(
[fBillOfLadingID],
[fPickDate],
[fkind]
)
VALUES
(
@BillOfLadingID,
@PickDate,
@kind
)GO
(@BillOfLadingID char(14) output,
@PickDate smalldatetime,
@kind bit
)AS INSERT INTO PickUpWHTableIndex
(
[fBillOfLadingID],
[fPickDate],
[fkind]
)
VALUES
(
/*@BillOfLadingID赋值该如何写?下面写法不对*/
dbo.NewPickId(@kind) --不要select @BillOfLadingID=@PickDate,
@kind
)GO
RETURNS varchar(11) AS
BEGIN
declare @id varchar(11) , @i int/* 找出目前最大的编号*/
select top 1 @id = fBillOfLadingID from PickUpWHTableIndex where fKind=1 Order by fBillOfLadingID descif @@Rowcount = 0 /*如果时第一条记录*/
return 'HS/G0000001'
set @i = cast(right(@id,7) as int ) +1
set @id = cast( @i as varchar)return 'HS/G' + Replicate('0', 7-len(@id)) + @id
END 函数没有错误,这也是rivery教我的。但人有上面的错误提示.怎么回事?
因为你需要output,所以就一次在前面给@BillOfLadingID赋值了。
你这个函数上次好像提出来过,大家给了很多好的答案,现在感觉好像还是原来的那个。
你执行一下
select dbo.NewPickID()
看结果是什么。
@BillOfLadingID char(14)
RETURNS varchar(11)
注意这两个的长度要对称的。
=======================>
你没有为fBillOfLadingID,PickUpWHTableIndex字段提供值,但是设计表的时候又不允许他们为null
得到: HS/G0000001我是将它作为主键的,不为NULL