我在一个数据库中工作,每个用户在他们的架构中都有一个名为 FindResults 的表
例如:MyDatabase.User1.FindResults、MyDatabase.User2.FindResults 等。
如果我在以用户之一身份登录时在此表上运行 SELECT 查询,它就可以正常工作。但是,我有一个存储过程 (MyDatabase.dbo.ReadFindResults) 尝试在此表上运行 SELECT 查询,它失败了,因为它尝试读取 MyDatabase.dbo.FindResults (不存在)。我已经通过使用动态 SQL 解决了这个问题,但我希望有办法避免这种情况。
有没有办法告诉存储过程使用当前用户的模式或者改变范围以允许它找到我想要的表?
编辑:这是存储过程的代码
-- Returns the IDs contained in the given find results set
CREATE PROCEDURE [dbo].[ReadFindResults]
@resultsid int -- The ID of the results set
AS
BEGIN
SELECT objectid FROM FindResults WHERE resultsid = @resultsid
END
GO