温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

存储过程能跨库调用吗

发布时间:2026-09-03 05:39:34 来源:亿速云 阅读:100 作者:小樊 栏目:数据库

简短回答:能,但取决于数据库类型和权限设置。

下面按常见数据库分别说明:


一、MySQL

可以跨库调用,语法上直接写 库名.存储过程名 即可。

CALL other_db.proc_name();

前提条件

  1. 当前用户对该存储过程有 EXECUTE 权限
  2. 两个库在同一台 MySQL 实例上(MySQL 不支持跨实例调用)

⚠️ 注意:存储过程内部如果访问表,也要有对应库的权限


二、SQL Server

可以跨库,甚至跨实例(Linked Server)

同实例跨库

EXEC other_db.dbo.proc_name;

跨实例(Linked Server)

EXEC linked_server.other_db.dbo.proc_name;

三、Oracle

Oracle 中“库”概念不同(通常是 Schema / 用户)

跨 Schema 调用

BEGIN
  other_schema.proc_name();
END;

跨数据库

  • 需要通过 DB Link
BEGIN
  proc_name@db_link;
END;

四、PostgreSQL

可以跨 Schema,不直接跨数据库

同实例跨 Schema

CALL other_schema.proc_name();

跨数据库

  • PostgreSQL 不支持直接跨库调用存储过程
  • 解决方案:
    • dblink
    • postgres_fdw
    • 应用层调用

五、常见限制总结

数据库 同实例跨库 跨实例
MySQL ✅ ❌
SQL Server ✅ ✅
Oracle ✅(Schema) ✅(DB Link)
PostgreSQL ✅(Schema) ❌(需扩展)

六、实际建议

  • 跨库调用 慎用,会增加耦合和维护成本
  • 更适合的做法:
    • 应用层分别调用
    • 使用事件 / 消息
    • 数据同步

如果你能告诉我 具体用的是哪种数据库 + 场景,我可以给你更精确的建议。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手