Tsql 我可以从存储过程中引用视图中的表吗?

Tsql 我可以从存储过程中引用视图中的表吗?,tsql,Tsql,我在数据库中的3个表上创建了一个视图,它们如下所示: Activity ActivityRole aspnet_UsersInRoles 如果传入的用户ID是活动角色中指定的角色的成员,我将尝试获取活动和活动中的内容的组合 我正在创建一个视图,因为我想从视图中生成一个名为Activity的对象,该对象包含Activity和ActivityRole中的字段 我的第一次尝试是创建这样一个视图,即内部将Activity连接到ActivityRole,将ActivityRole连接到Activit

我在数据库中的3个表上创建了一个视图,它们如下所示:

Activity

ActivityRole

aspnet_UsersInRoles
如果传入的用户ID是活动角色中指定的角色的成员,我将尝试获取活动和活动中的内容的组合

我正在创建一个视图,因为我想从视图中生成一个名为Activity的对象,该对象包含Activity和ActivityRole中的字段

我的第一次尝试是创建这样一个视图,即内部将Activity连接到ActivityRole,将ActivityRole连接到Activity.ActivityId=ActivityRole.ActivityId和ActivityRole.RoleId=aspnet_UsersInRoles.RoleId上的用户角色

现在,我只想通过位于aspnet_User_UserRoles表中的UserId来提取记录

我倾向于编写一个存储过程,它可以:

SELECT * From MyView WHERE aspnet_UsersInRoles.UserID = @UserID
但是,我无法通过存储过程在视图中引用aspnet_UsersInRoles表

我的方法完全错了吗


感谢您的帮助。

您应该在查看表时查看视图,其中包含行和列。从外部看,您只看到在视图中定义的列,而不是创建视图所依据的表中的基础列。因此,在您的例子中,
MyView
没有名为
aspnet\u UsersInRoles.UserId
的列

要能够查询此列,应将其包含在视图中。然后,您可以执行以下操作:

SELECT * FROM MyView v WHERE v.UserId = @UserId

你的问题很令人困惑。考虑澄清。