我需要一个程序,从我的 sql 服务器数据库中为我的 Visual Studio 程序(vb.net)提供用户特定的数据。工厂里的工人应该只看到自己的时间表。我有一个带有 Workers_ID 和名称的表(名称与域中的 windows 用户名相同。我们的秘书通过另一个前端将其放入)。这个想法是编写一个参数存储过程,它给我(取决于 SUSER_NAME)Workers_ID,然后我可以通过这个 Workers_ID 选择其他表(因为它是其他表中的外键)。这是我的代码:
CREATE PROCEDURE USERTAB as
DECLARE @TEMPUSER_ID as int
declare @MyDomainLogin varchar(30)
Suser_Name gives me the Domain\Username. I cut the "Domain\" part off, since i dont need it.
BEGIN
SET @MyDomainlogin = SUSER_NAME()
SET @MyDomainLogin = SUBSTRING(@MyDomainLogin,CHARINDEX('\',@MyDomainLogin) + 1,30)
SELECT @TEMPUSER_ID = Workers_ID FROM Workers
WHERE Name = @MyDomainLogin
SELECT * FROM TimeTable
WHERE Workers_ID = @TEMPUSER_ID
END
exec USERTAB
结果给了我正确的表格,但一遍又一遍,直到我收到错误消息:
Msg 217, Level 16, State 1, Procedure USERTAB, Line 14
超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)。
看起来像一个我不知道的触发器......如果你们中的一个能给我一只手,那真的很棒!
谢谢!