首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dbo过程来执行不同的模式?

如何使用dbo过程来执行不同的模式?
EN

Stack Overflow用户
提问于 2014-08-20 18:01:22
回答 1查看 798关注 0票数 0

我使用的是SQL Server2008 R2,我有一个架构[dbo],并且在该架构中,我创建了一个存储过程dbo.GetAccount

代码语言:javascript
复制
SELECT * FROM tblAccount

然后,我已经创建了一个名为UserABC的用户的模式[ABC]

现在,我想使用UserABC登录并对模式[ABC]执行dbo.GetAccount,以获取它的所有用户,并且不想更改dbo.GetAccount的代码。那么,我该怎么做呢?

谢谢你的帮助。

EN

Stack Overflow用户

发布于 2014-08-20 18:14:34

如果我没记错的话,

代码语言:javascript
复制
SELECT * FROM tblAccount actualy means SELECT * FROM [dbo].[tblAccount] 

因此,您的过程将始终从dbo模式执行tblAccount。

如果您想(比方说)有一个可以从更多模式执行“通用”过程,我建议您尝试使用动态sql。

代码语言:javascript
复制
    CREATE PROCEDURE [dbo].[GetAccout] 
        @schema 
 as   
       declare @sql varchar(200)
    set @sql = 'SELECT * FROM ['+@schema+'].[tblAccount]'

    exec(@sql)

然后运行exec [dbo].[GetAccout] ABC

这将选择来自YourSchema.tblAccount的所有信息。

我现在不能测试它,但我应该工作。还要记住,表必须在该模式中!

但是如果你不能改变所有的程序,我想不出一个解决方案。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25401919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档