CREATE function getcardid() returns char(8) as begin declare @cardid char(8) select @cardid='06000001'
if not exists(select * from pandian) return @cardid else select @cardid=max(cardid) from pandian select @cardid='06'+right(cast(1000000+convert(int,substring(@cardid,3,6))+1 as varchar),6) return @cardid end
CREATE function getcardid() returns char(8) as begin declare @cardid char(8) select @cardid='06000001'
if not exists(select * from pandian) return @cardid else select @cardid=max(cardid) from pandian select @cardid='06'+right(cast(1000000+convert(int,substring(@cardid,3,6))+1 as varchar),6) return @cardid end 會生成兩個一樣的值嗎?不可能吧
下列SQL語句執行出錯 insert into pandian(pandiandate,matplace,matid,matname,mattype, matstatus,quantity1) select getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype, m.matstatus,m.quantity from material m 有人可能會說出錯原因是產生了相同的cardid, 可是當查詢時pandian表中沒有一條記錄。而 insert into pandian(pandiandate,matplace,matid,matname,mattype, matstatus,quantity1) values(getdate(),'a','a','a','a','a',100) 則執行的良好,產生的cardid是連續的,06000001,06000002,.......06000009,...06000101....
insert into pandian(cardid,pandiandate,matplace,matid,matname,mattype, matstatus,quantity1) select dbo.getcardid(),getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype, m.matstatus,m.quantity from material m
proglovercn(冰雪) insert into pandian(cardid,pandiandate,matplace,matid,matname,mattype, matstatus,quantity1) select dbo.getcardid(),getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype, m.matstatus,m.quantity from material m 執行也出錯,出錯信息一模一樣
returns char(8)
as
begin
declare @cardid char(8)
select @cardid='06000001'
if not exists(select * from pandian)
return @cardid
else
select @cardid=max(cardid) from pandian
select @cardid='06'+right(cast(1000000+convert(int,substring(@cardid,3,6))+1 as varchar),6)
return @cardid
end
returns char(8)
as
begin
declare @cardid char(8)
select @cardid='06000001'
if not exists(select * from pandian)
return @cardid
else
select @cardid=max(cardid) from pandian
select @cardid='06'+right(cast(1000000+convert(int,substring(@cardid,3,6))+1 as varchar),6)
return @cardid
end
會生成兩個一樣的值嗎?不可能吧
insert into pandian(pandiandate,matplace,matid,matname,mattype,
matstatus,quantity1)
select getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype,
m.matstatus,m.quantity from material m 有人可能會說出錯原因是產生了相同的cardid,
可是當查詢時pandian表中沒有一條記錄。而
insert into pandian(pandiandate,matplace,matid,matname,mattype,
matstatus,quantity1)
values(getdate(),'a','a','a','a','a',100)
則執行的良好,產生的cardid是連續的,06000001,06000002,.......06000009,...06000101....
matstatus,quantity1)
select dbo.getcardid(),getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype,
m.matstatus,m.quantity from material m
insert into pandian(cardid,pandiandate,matplace,matid,matname,mattype,
matstatus,quantity1)
select dbo.getcardid(),getdate() as pandiandate ,m.matplace,m.id,m.matname,m.mattype,
m.matstatus,m.quantity from material m
執行也出錯,出錯信息一模一樣