遇到一个客户在9.1中建了600多个帐套,后来建的帐套中的用户不能登陆(大约200多个的时候).我分析了一下是存储过程的问题,作如下修改是否妥当?
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create Procedure Pro_BuildAcctAllUser
AS
SET NOCOUNT ON
declare @AllActSql varchar(8000)
declare @ActName varchar(50)
if object_id('tempdb..##tmp_Acct') is not null drop table ##tmp_Acct
create table ##tmp_Acct(FName varchar(30))
if object_id('AcctCtl..T_AcctAllUser') is null
Create Table AcctCtl..T_AcctAllUser(FUserName varchar(30) primary key,FUserAllCount int)
else
truncate table AcctCtl..T_AcctAllUser
if object_id('AcctCtl..T_UserNotView') is null Create table AcctCtl..t_UserNotView(FUserName varchar(30) primary key,FPwd varchar(32),FAcctIDStr varchar(8000) not null)
DECLARE MyCursor CURSOR FOR select b.name from AcctCtl..T_AD_KDACCOUNT_GL a inner join master..Sysdatabases b on a.FDBName =b.name where a.FDBType =1
open MyCursor
fetch from MyCursor into @ActName
while @@fetch_status=0
begin
set @AllActSql=''
select @AllActSql='insert into ##tmp_Acct(FName) select FName from '+@ActName+'..t_user where FUserID>=16394'
execute(@AllActSql)
fetch next from MyCursor into @ActName
end
close MyCursor
deallocate MyCursor
insert into AcctCtl..T_AcctAllUser(FUserName,FUserAllCount)select FName,count(FName) from ##tmp_Acct group by FName
Drop Table ##tmp_Acct
SET NOCOUNT OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
修改时间:2008-9-23 23:56:40