如何在T-SQL中省略my_schema前缀直接调用存储过程和函数?
省略Schema前缀直接调用存储过程/函数的实现方法
可以通过设置用户默认Schema或者临时切换会话Schema的方式,实现无需前缀直接调用my_schema下的存储过程和函数,具体操作如下:
一、设置用户默认Schema(永久生效)
执行以下T-SQL语句,将当前登录用户的默认Schema修改为my_schema:
ALTER USER [你的用户名] WITH DEFAULT_SCHEMA = my_schema;
注意:执行该操作需要拥有
ALTER USER权限,设置完成后,后续该用户的所有会话中,直接使用exec stored_proc就会自动匹配my_schema.stored_proc,和你省略表前缀的逻辑完全一致。
二、临时切换会话Schema(仅当前会话生效)
如果不需要永久修改用户默认Schema,可在当前会话中临时切换默认Schema:
SET SCHEMA my_schema; exec stored_proc; -- 此时调用的是my_schema下的存储过程
会话结束后,默认Schema会自动恢复为原设置。
额外说明
- 若数据库中存在同名对象(如
dbo.stored_proc和my_schema.stored_proc),无前缀调用会优先匹配当前默认Schema下的对象。 - 标量函数和表值函数也适用此逻辑,设置默认Schema后,可直接用
SELECT my_func()调用my_schema.my_func,无需添加前缀。
内容的提问来源于stack exchange,提问作者Andrey K
相关产品推荐
相关产品推荐

