首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

函数调试有关问题

2012-02-05 
函数调试问题SQL codecreate function [dbo].[AutoHousingEstate_ID]returns nvarchar(3)asbegindeclare @

函数调试问题

SQL code
create function [dbo].[AutoHousingEstate_ID]returns nvarchar(3)asbegin    declare @i int    set @i=1    declare @HousingEstate_ID nvarchar(3)    select @HousingEstate_ID=isnull(min(HousingEstate_ID),'001') from HousingEstateInfo    if @i<999    while convert(int,@HousingEstate_ID)<>@i        begin        select @HousingEstate_ID=right('000'+convert(nvarchar(3),@i),3)        set @i=@i+1        end    return (@HousingEstate_ID)end


[解决办法]
友情up
[解决办法]
明白了,其实就是查断号
随手敲的,难免手误

SQL code
SELECT RIGTH('000',ISNULL(MIN(CAST(HousingEstate_ID AS INT)),1),3) FROM HousingEstateInfo a WHERE NOT EXISTS(SELECT 1 FROM HousingEstateINfo WHERE CAST(HousingEstate_ID AS INT)=CAST(a.HousingEstate_ID AS INT)+1) ORDER BY HousingEstate_ID
[解决办法]
SQL code
create function [dbo].[AutoHousingEstate_ID]()returns varchar(3)asbegin       declare @HousingEstate_ID varchar(3)    select top 1 @HousingEstate_ID=HousingEstate_ID from HousingEstateInfo H    where not exists(select 1 from HousingEstateInfo where HousingEstate_ID=right('00'+convert(varchar(3), cast(H.HousingEstate_ID as int)+1),3))    order by HousingEstate_ID        return (right('00'+convert(varchar(3), cast(H.HousingEstate_ID as int)+1),3))end 

热点排行