SQL如何定义一个全局变量

我写了一个触发器,用来解决用户是否对仓库权有审核权限问题
Create trigger [Check_Stock_right]
on [dbo].[ICStockBill]
for Update
As
Declare @FName1 varchar(80) --当前的系统登录用户名
Declare @FDCStockIDName varchar(80) --取得当前单据调入仓库的名字
Declare @FSCStockIDName varchar(80) --取得当前单据调出仓库的名字
Declare @FStockCode int --取得当前用户的ID
Declare @FStatus int
Declare @FSCode int --当前仓库的内码
Declare @FTranType int
Declare @FLogID int

Select @FName1=T1.FName from t_User T1,t_Log T2 where T2.FUserID=T1.FUserID

select @FStockCode = T3.FItemID from t_Emp T3 where T3.FName =@FName1
select @FTranType =T1.FTranType,@FStatus=T1.FStatus from ICStoCkBill T1,Inserted T2 where T1.FInterID =T2.FInterID
/*************************************************/
--外购入库单
if @FTranType = 1
Begin
select @FDCStockIDName=T1.FDCStockIDName from vwICBill_1 T1,Inserted T2 where T1.FInterID = T2.FInterID
select @FSCode = T1.FItemID from t_Stock T1 where T1.FName = @FDCStockIDName
if (Select count(*) from t_BOSStockManagerT T1,t_BOSStockManagerTEntry T2 where T1.FID =T2.FID
and T1.FSCode =@FSCode and T2.FStockCode = @FStockCode )=0 and Update(FStatus)
Begin
--RAISERROR('您没有该仓库的管理权限',18,18)
RAISERROR('当前的用户名字是:%s, 当前仓库名字是: %s.',16, 1, @FName1, @FDCStockIDName)
End
End

--产品入库单
if @FTranType = 2
Begin
select @FDCStockIDName=T1.FDCStockIDName from vwICBill_2 T1,Inserted T2 where T1.FInterID = T2.FInterID
select @FSCode = T1.FItemID from t_Stock T1 where T1.FName = @FDCStockIDName

if (Select count(*) from t_BOSStockManagerT T1,t_BOSStockManagerTEntry T2 where T1.FID =T2.FID
and T1.FSCode =@FSCode and T2.FStockCode = @FStockCode )=0 and Update(FStatus)
Begin
--RAISERROR('您没有该仓库的管理权限',18,18)
RAISERROR('当前的用户名字是:%s, 当前仓库名字是: %s.',16, 1, @FName1, @FDCStockIDName)
End
End
/***************************/
这里在实际应用中出现了一个问题
就是有多个当前的用户登录的时候这里SQL取得的@FName1是不同的值,有可能是变动的!
如A在自己的机器上用甲,乙两个人的帐号操作
在甲帐号取得@FName1是甲,乙的帐号取得的@FName1是乙
但是,当甲使用一段时间后再用乙的,却发现取得的帐号是甲,
关于取的帐号是根据当前的日志取得的!
有某个操作后才生成新的日志

问题是我怎么取得第一次登录的帐号@FName并设置成定值,这样,不论后面怎么操作,在甲看来取的@FName1永远是甲了!在乙看来取得的@FName1永远是乙!

何不新建一张表,把需要的参数存进去,每次提取参数的时候调用
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-02-28
declare @@num int
set @@num=1
print @@num
set @@num=@@num+1
print @@num
相似回答
大家正在搜